SQL中批量替换数据:REPLACE()、JSON_REPLACE()

这篇具有很好参考价值的文章主要介绍了SQL中批量替换数据:REPLACE()、JSON_REPLACE()。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

文本编辑器中有批量替换的功能,那么SQL中也可以实现批量替换数据,以下两个函数:

  • REPLACE()
  • JSON_REPLACE()

REPLACE()

定义:

REPLACE(str,from_str,to_str)

释义:
在字符串str中查找子字符串from_str并用另一个字符串to_str替换它
下面是一个示例:
假设我们有一个名为mytable的表,其中包含一个名为content的字段,其中包含一些文本数据。我们想要将其中所有出现的字符串old_string替换为new_string。我们可以使用以下SQL语句:

UPDATE mytable
SET content = REPLACE(content, 'old_string', 'new_string');
# 使用UPDATE语句,后一定要跟WHERE限制条件,不然就更新整个数据库的内容了,慎重!!
UPDATE mytable
SET content = REPLACE(content, 'old_string', 'new_string');
WHERE 条件1 AND 条件2;

如下数据:
SQL中批量替换数据:REPLACE()、JSON_REPLACE()
执行SQL后数据被替换为:
SQL中批量替换数据:REPLACE()、JSON_REPLACE()

JSON_REPLACE()

在简单的字符串的替换中可以使用REPLACE()函数,若数据库中某个字段是JSON中的值,那么这个时候使用REPLACE()替换数据,数据量就会很大,而且很容易导致错误,若是个JSON对象,数据库也不会允许用REPLACE()方法直接替换
因此,这时候我们可以用JSON_REPLACE()函数做到对JSON对象的某个值的替换。

定义:

JSON_REPLACE(json_doc, path, val[, path, val] ...)

释义:
在json_doc中,path则为JSON中需要替换的key,val则为需要替换的目标值
下面是一个示例:
假设我们有一个名为mytable的表,其中包含一个名为content的JSON类型的字段,其中包含以下数据:

{
  "name": "Alice",
  "age": 30,
  "address": {
    "city": "Shanghai",
    "country": "China"
  }
}

现在我们想要将其中的age键的值替换为31,city键的值替换为Beijing。我们可以使用以下SQL语句:

UPDATE mytable
SET content = JSON_REPLACE(
  content,
  '$.age', 31,
  '$.address.city', 'Beijing'
);
# 使用UPDATE语句,后一定要跟WHERE限制条件,不然就更新整个数据库的内容了,慎重!!
UPDATE mytable
SET content = REPLACE(content, 'old_string', 'new_string');
WHERE 条件1 AND 条件2;

注意:在使用JSON_REPLACE函数时,路径必须以$开头,并且路径中的每个键名都必须使用双引号括起来。

获取JSON中的值

在查询过程中经常会遇到查询一个JSON中某个字段的值是否符合需求,如上JSON中查找地区是‘Beijing’的数据,可以用以下SQL

select * from mytable where content ->> '$.address.city' = 'Beijing'

以上SQL中用到符号‘->>’操作符,作用从JSON对象中获取指定键的值,并将其作为字符串返回。

操作符->和->> 的区别

在MySQL中,->和->>这两个操作符都是用于操作JSON类型的数据的。它们的主要区别在于返回值的类型不同。

->操作符用于从一个JSON对象中获取指定key的值,返回的是一个JSON对象或NULL
例如,假设我们有一个名为mytable的表,其中包含一个名为content的JSON类型的字段,我们可以使用以下语句获取content中的name键对应的值:

SELECT content->'$.name' AS name FROM mytable;
-- 查询结果为
{"name": "Alice"}

->>操作符则用于从一个JSON对象中获取指定key的值,并将其作为字符串返回。
例如,我们可以使用以下语句获取content中的name键对应的值:

SELECT content->>'$.name' AS name FROM mytable;
-- 查询结果为
Alice

因此,->和->>的主要区别在于返回值的类型,->返回JSON对象或NULL,而->>返回字符串。文章来源地址https://www.toymoban.com/news/detail-512132.html

到了这里,关于SQL中批量替换数据:REPLACE()、JSON_REPLACE()的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【C++】STL 算法 - 拷贝替换算法 ( 元素复制算法 - copy 函数 | 元素替换算法 - replace 函数 | 替换符合要求的元素算法 - replace_if 函数 )

    在 C++ 语言 的 标准模板库 ( STL , STL Standard Template Library ) 中 , 提供了 copy 元素复制算法函数 用于 将 一个容器中的元素 复制 到 另外一个 容器中 ; copy 元素赋值函数 将 输入容器 的 [ 起始迭代器, 终止迭代器 ) 范围 内的 元素 复制 到输出序列中 , 从输出容器 的 指定开始位置

    2024年01月20日
    浏览(58)
  • eclipse正则表达式替换 Find/Replace

    CTRL+F 打开 Find/Replace 对话框 勾选 Regular expressions ​ 下图中的 Find : /.*/ ​ 换行符: R 下图中的 Find 表达式: R.*@Excel.* ​ /** 替换为 Rt/** ​ 下图中的 Find 表达式: .*private (.*) (.*); 下图中的 Replace with 表达式: t//变量类型$1;变量名$2Rtprivate 1 2; 括号 () 内的分组会被捕

    2024年01月21日
    浏览(48)
  • Python使用replace函数同时替换多个字符串

    用replace函数替换单个的字符或指定的字符串 比如将字符 \\\' a \\\' 替换成 \\\' A \\\'  但如果我想同时替换掉两个或多个字符串呢,直接调用多次就行了 将\\\' a \\\' 替换成 \\\' A \\\' ,同时将\\\' b \\\' 替换成 \\\' B \\\'  但这也有一个缺陷,就是你前面替换后的字符串如果和后面要替换的字符串相同的话(

    2024年02月11日
    浏览(46)
  • Python replace()函数使用详解,Python替换字符串

    「作者主页」: 士别三日wyx 「作者简介」: CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」: 小白零基础《Python入门到精通》 replace() 可以 「替换」 字符串中的内容 语法 参数 old :(必选,字符串类型)被替换的字符串 new :(必选,

    2024年02月16日
    浏览(45)
  • js 关于 replace 取值、替换第几个匹配项

    在日常开发中,经常遇到针对字符串的替换、截取,知识点比较碎容易混淆,特此总结一下,仅供参考。  当直接在被替换字符串恰后加上 / 时,不添加修饰符,就等同于直接字符串替换。  格式:/待替换的字符串/g、/待替换的字符串/mgi。   g:执行全局匹配,替换全部匹

    2024年02月06日
    浏览(39)
  • vue字符串替换,vue将字符串内指定字符替换,vue字符串替换函数.replace如何使用

    vue字符串替换,vue将字符串内指定字符替换,vue字符串替换函数.replace如何使用

    2024年02月11日
    浏览(52)
  • oracle传入两个参数的的replace函数替换成hive方式

    oracle2个参数的replace转换成hive实现 总结:oracle支持传入2个参数,但是hive支持传入3个参数,那么可以将第三个参数写为空字符串 转义符处理 对于concat函数中加“”分隔符需要使用6转义符

    2024年02月13日
    浏览(44)
  • window.location.href()/replace()/reload() -- 页面跳转+替换+刷新

    1. window.location.href = \\\'url\\\' ;  改变地址进行跳转 2. window.location.replace(\\\'url\\\') ;  将地址替换成新的url, 该方法通过制定的url替换,当前缓存在历史里(客户端)的项目,因此当使用了replace方法之后,你不能通过 前进 和 后退 , 来访问已经被替换的url, 这个特点对一些过渡页面非常有用! 例

    2024年02月11日
    浏览(39)
  • C++string类replace()函数(替换字符串中的子串)

    C++中的string类提供了replace()函数,用于替换字符串中的子串。其函数原型如下: 其中,pos表示要替换的子串在原字符串中的起始位置,len表示要替换的子串的长度,str表示用来替换的字符串。 replace()函数的使用方法非常简单,只需要传入要替换的子串的位置、长度和替换字

    2024年02月05日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包