需求描述:

  在看mysql中关于json的内容,通过json_replace函数可以实现对json值的替换,

  在此记录下.

操作过程:

1.查看带有json数据类型的表

mysql> select * from tab_json;
+----+---------------------------------------------------------------------------------------+
| id | data |
+----+---------------------------------------------------------------------------------------+
| 1 | {"age": "33", "tel": 13249872314, "passcode": "654567"} |
| 2 | {"age": "33", "tel": 189776542, "name": "David", "olds": "12", "address": "Hangzhou"} |
+----+---------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)

2.使用json_replace函数对json值进行操作

mysql> select json_replace(data,'$.age',54,'$.tel',15046464563) from tab_json  where id = 1; #使用json_replace进行查询处理,对已经存在的key值进行替换
+-------------------------------------------------------+
| json_replace(data,'$.age',54,'$.tel',15046464563) |
+-------------------------------------------------------+
| {"age": 54, "tel": 15046464563, "passcode": "654567"} |
+-------------------------------------------------------+
1 row in set (0.00 sec) mysql> select json_replace(data,'$.age',54,'$.tel',15046464563,'$.sex',"male") from tab_json where id = 1; #对于不存在key,是没有增加新的key-value值的
+------------------------------------------------------------------+
| json_replace(data,'$.age',54,'$.tel',15046464563,'$.sex',"male") |
+------------------------------------------------------------------+
| {"age": 54, "tel": 15046464563, "passcode": "654567"} |
+------------------------------------------------------------------+
1 row in set (0.00 sec)

3.通过update语句对json中的值进行替换操作

mysql> update tab_json set data = json_replace(data,'$.age',54,'$.tel',15046464563) where id = 1; #对id=1的行进行更新操作,更新之后,age和tel的值发生了变化
Query OK, 1 row affected (0.10 sec)
Rows matched: 1 Changed: 1 Warnings: 0 mysql> select * from tab_json;
+----+---------------------------------------------------------------------------------------+
| id | data |
+----+---------------------------------------------------------------------------------------+
| 1 | {"age": 54, "tel": 15046464563, "passcode": "654567"} |
| 2 | {"age": "33", "tel": 189776542, "name": "David", "olds": "12", "address": "Hangzhou"} |
+----+---------------------------------------------------------------------------------------+
2 rows in set (0.00 sec) mysql> update tab_json set data = json_replace(data,'$.age',54,'$.tel',15046464563,'$.sex',"male") where id = 1; 对id=1的行进行更新操作,更新之后,age和tel的值发生了变化,但是并没有增加新的key
Query OK, 0 rows affected (0.00 sec)
Rows matched: 1 Changed: 0 Warnings: 0 mysql> select * from tab_json;
+----+---------------------------------------------------------------------------------------+
| id | data |
+----+---------------------------------------------------------------------------------------+
| 1 | {"age": 54, "tel": 15046464563, "passcode": "654567"} |
| 2 | {"age": "33", "tel": 189776542, "name": "David", "olds": "12", "address": "Hangzhou"} |
+----+---------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)

备注:所以json_replace的主要作用是替换,如果存在key就替换对应的值,如果不存在key也不会增加,与json_insert的使用有区别.

json_insert函数的使用:https://www.cnblogs.com/chuanzhang053/p/9142212.html

文档创建时间:2018年6月6日09:48:10

mysql中json_replace函数的使用?通过json_replace对json对象的值进行替换的更多相关文章

  1. MySQL中group_concat函数,用符号连接查询分组里字段值

    http://blog.csdn.net/my_yang/article/details/7186844

  2. mysql中now()函数的使用,还有oracle的sysdate,可能埋下的坑

    mysql中now()函数的使用,还有oracle的sysdate 在需求中如果系统中药添加当前操作的时间那么很简单的一个操作在写sql的时候直接在这个字段对应的位置写上now()函数就可以了,这样就 ...

  3. MySQL中concat函数(连接字符串)

    MySQL中concat函数使用方法:CONCAT(str1,str2,…) 返回结果为连接参数产生的字符串.如有任何一个参数为NULL ,则返回值为 NULL. 注意:如果所有参数均为非二进制字符串 ...

  4. Mysql中的函数

    什么是函数 mysql中的函数与存储过程类似,都是一组SQL集: 与存储过程的区别 函数可以return值,存储过程不能直接return,但是有输出参数可以输出多个返回值: 函数可以嵌入到sql语句中 ...

  5. MySQL中concat函数

    MySQL中concat函数使用方法:CONCAT(str1,str2,…) 返回结果为连接参数产生的字符串.如有任何一个参数为NULL ,则返回值为 NULL. 注意:如果所有参数均为非二进制字符串 ...

  6. mysql中INSTR函数的用法

    mysql中INSTR函数的用法 INSTR(字段名, 字符串) 这个函数返回字符串在某一个字段的内容中的位置, 没有找到字符串返回0,否则返回位置(从1开始) SELECT * FROM tblTo ...

  7. MySQL中group_concat函数-和group by配合使用

    MySQL中group_concat函数 完整的语法如下: group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔 ...

  8. MySQL中时间函数NOW()和SYSDATE()的区别

    mysql中日期函数还是比较常用的.主要有NOW()和SYSDATE()两种,虽然都表示当前时间,但使用上有一点点区别. NOW()取的是语句开始执行的时间,SYSDATE()取的是动态的实时时间. ...

  9. mysql中的函数与存储过程

    mysql中的函数:1 mysql下创建函数: 1.1 语法: delimiter $$ -- 设置分隔符,默认是; 设置成其他符号,让编译器知道我们函数编写的结束,此处设置成$$ create fu ...

随机推荐

  1. [watchdog]内核失败的重启方案

    1 在内核中配置看门狗驱动Linux-2.6.32.2 内核具有完善的S3C2440 的看梦狗驱动,我们只需配置一下就可以使用了.在内核源代码目录执行:make menuconfig,进入内核配置主菜 ...

  2. IoCopyCurrentIrpStackLocationToNext与IoSetCompletionRoutine的深入理解

    1.IoCopyCurrentIrpStackLocationToNext是拷贝本层的IO_STACK_LOCATION 到下一层.在楚狂人的驱动教程中说:如果对irp完成之后的事情有兴趣,并打算在完 ...

  3. hive中使用with as查询作为临时中间表

    oracle.hive都存在with as的用法.用于将重复的查询结果复用. 今天做统计分析时用到,使用例子如下: 1. 直接查询 with tmp_a as ( select f1,f2,f3 fr ...

  4. C# BCC异或校验法

    通讯协议中最后一位是校验位 采用BCC(异或校验)法 这个怎么解释? 就是 把16进制的字符串转换成byte[]数据,依次拿出来进行异或一下 然后返回的值和校验位对比下 看看对不对 例如: 23230 ...

  5. 《开发专家 Visual C 开发入行真功夫》笔记

    智能感知的功能,输入 is 后,同时按下Alt + →这两个键就出现了供选择变量.方法.宏等的列表,继续输入 in 后,isInit就出来了. stdafx.h预编译头文件,.h应用程序主头文件,do ...

  6. 自然语言交流系统 phxnet团队 创新实训 个人博客 (八)

    今天想测试一下“庖丁”分词的效果,编写了一个测试小程序,从文件中读入文本,并将分词结果显示到控制台. 环境平台:Win7+eclipse 过程如下: 1.编辑paoding-analysis.jar中 ...

  7. Python之cv2

    1.读取图片 import cv2 img = cv2.imread('./test.jpg') 读取出来的图片是numpy.ndarray格式,值是0-255, img的形状是 (图片高度,图片宽度 ...

  8. git patch 使用

    使用git的时候,需要删除几个id,会对到之前的代码,但又想保留现在的代码,以便后面从新合并,所以就将现在的代码打包成patch,留到下次合并. 参考链接 http://www.jianshu.com ...

  9. 对 /etc/rc.d/init.d 目录的一点理解

    转载 一.Linux的引导过程 系统启动之后,在进入init.d之前,我们先来看看系统都做了什么工作.系统加电之后,首先进行的硬件自检,然后是bootload对系统的初始化,加载内核. 内核被加载到内 ...

  10. Java如何使用catch来处理异常?

    在Java编程中,如何使用catch块来处理异常? 此示例显示如何使用catch来处理异常. package com.yiibai; public class UseOfCatch { public ...