需求描述:

  今天在看mysql中存放json数据类型的问题,对于json数据进行修改的操作,

  在此记录下.

操作过程:

1.创建包含json数据类型的表,插入基础数据

mysql> create table tab_json(id int not null auto_increment primary key,data json);
Query OK, 0 rows affected (0.03 sec) mysql> insert into tab_json values (null,'{"name":"Mike","address":"Beijing","tel":13249872314}');
Query OK, 1 row affected (0.01 sec) mysql> insert into tab_json values (null,'{"name":"David","address":"Shanghai","tel":189776542}');
Query OK, 1 row affected (0.01 sec) mysql> select * from tab_json;
+----+------------------------------------------------------------+
| id | data |
+----+------------------------------------------------------------+
| 1 | {"tel": 13249872314, "name": "Mike", "address": "Beijing"} |
| 2 | {"tel": 189776542, "name": "David", "address": "Shanghai"} |
+----+------------------------------------------------------------+
2 rows in set (0.00 sec)

2.通过json_set函数,来修改data字段的值

mysql> update tab_json set data = json_set(data,"$.address","Guangzhou") where id = 1;  #对id = 1的行的address的键值进行修改.
Query OK, 1 row affected (0.26 sec)
Rows matched: 1  Changed: 1  Warnings: 0 mysql> select * from tab_json;
+----+--------------------------------------------------------------+
| id | data                                                         |
+----+--------------------------------------------------------------+
|  1 | {"tel": 13249872314, "name": "Mike", "address": "Guangzhou"} |
|  2 | {"tel": 189776542, "name": "David", "address": "Shanghai"}   |
+----+--------------------------------------------------------------+
2 rows in set (0.00 sec) mysql> update tab_json set data = json_set(data,"$.address","Shenzhen");
Query OK, 2 rows affected (0.02 sec)
Rows matched: 2  Changed: 2  Warnings: 0 mysql> select * from tab_json;
+----+-------------------------------------------------------------+
| id | data                                                        |
+----+-------------------------------------------------------------+
|  1 | {"tel": 13249872314, "name": "Mike", "address": "Shenzhen"} |
|  2 | {"tel": 189776542, "name": "David", "address": "Shenzhen"}  |
+----+-------------------------------------------------------------+
2 rows in set (0.00 sec) mysql> update tab_json set data = json_set(data,"$.address","Hangzhou") where id = 2; #对id为2的address键值进行修改
Query OK, 1 row affected (0.03 sec)
Rows matched: 1  Changed: 1  Warnings: 0 mysql> select * from tab_json;
+----+-------------------------------------------------------------+
| id | data                                                        |
+----+-------------------------------------------------------------+
|  1 | {"tel": 13249872314, "name": "Mike", "address": "Shenzhen"} |
|  2 | {"tel": 189776542, "name": "David", "address": "Hangzhou"}  |
+----+-------------------------------------------------------------+
2 rows in set (0.00 sec) mysql> update tab_json set data = json_set(data,"$.passcode","654567") where id = 1; #对id为1的passcode字段进行修改,发现没有这个键值,就增加了一个键值对.
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0 mysql> select * from tab_json;
+----+-----------------------------------------------------------------------------------+
| id | data                                                                              |
+----+-----------------------------------------------------------------------------------+
|  1 | {"tel": 13249872314, "name": "Mike", "address": "Shenzhen", "passcode": "654567"} |
|  2 | {"tel": 189776542, "name": "David", "address": "Hangzhou"}                        |
+----+-----------------------------------------------------------------------------------+
2 rows in set (0.00 sec) mysql> update tab_json set data = json_set(data,"$.olds","12") where id = 2;
Query OK, 1 row affected (0.17 sec)
Rows matched: 1  Changed: 1  Warnings: 0 mysql> select * from tab_json;
+----+-----------------------------------------------------------------------------------+
| id | data                                                                              |
+----+-----------------------------------------------------------------------------------+
|  1 | {"tel": 13249872314, "name": "Mike", "address": "Shenzhen", "passcode": "654567"} |
|  2 | {"tel": 189776542, "name": "David", "olds": "12", "address": "Hangzhou"}          |
+----+-----------------------------------------------------------------------------------+
2 rows in set (0.00 sec) mysql> update tab_json set data = json_set(data,"$.age","33");
Query OK, 2 rows affected (0.02 sec)
Rows matched: 2  Changed: 2  Warnings: 0 mysql> select * from tab_json;
+----+------------------------------------------------------------------------------------------------+
| id | data                                                                                           |
+----+------------------------------------------------------------------------------------------------+
|  1 | {"age": "33", "tel": 13249872314, "name": "Mike", "address": "Shenzhen", "passcode": "654567"} |
|  2 | {"age": "33", "tel": 189776542, "name": "David", "olds": "12", "address": "Hangzhou"}          |
+----+------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)

备注:以上就是通过json_set进行对json字段的键值进行修改,如果存在就进行替换,如果不存在键值,就增加键值对.

文档创建时间:2018年6月5日21:59:18

mysql数据库中,如何对json数据类型的值进行修改?通过json_set函数对json字段值进行修改?的更多相关文章

  1. MYSQL数据库中,常见的数据类型有哪些?它们与java中的数据类型如何对应

    A.常规 映射 integer 或者 int int 或者 java.lang.Integer INTEGER 4 字节 long long Long BIGINT 8 字节 short short  ...

  2. MySQL存储引擎的实际应用以及对MySQL数据库中各主要存储引擎的独特特点的描述

    MySQL存储引擎的实际应用以及对MySQL数据库中各主要存储引擎的独特特点的描述: 1.MySQL有多种存储引擎: MyISAM.InnoDB.MERGE.MEMORY(HEAP).BDB(Berk ...

  3. C#实现MySQL数据库中的blob数据存储

    在MySQL数据库中,有一种blob数据类型,用来存储文件.C#编程语言操作MySQL数据库需要使用MySQL官方组件MySQL.Data.dll. Mysql.Data.dll(6.9.6)组件下载 ...

  4. node 爬虫 --- 将爬取到的数据,保存到 mysql 数据库中

    步骤一:安装必要模块 (1)cheerio模块 ,一个类似jQuery的选择器模块,分析HTML利器. (2)request模块,让http请求变的更加简单 (3)mysql模块,node连接mysq ...

  5. 如何从mysql数据库中取到随机的记录

    如何从mysql数据库中取到随机的记录 一.总结 一句话总结:用随机函数newID(),select top N * from table_name order by newid() ----N是一个 ...

  6. MySQL数据库中delimiter的作用概述

    以下的文章主要是向大家描述的是MySQL数据库中delimiter的作用是什么?我们一般都认为这个命令和存储过程关系不大,到底是不是这样的呢?以下的文章将会给你相关的知识,望你会有所收获. 其实就是告 ...

  7. PHP往mysql数据库中写入中文失败

    该类问题解决办法就是 在建立数据库连接之后,将该连接的编码方式改为中文. 代码如下: $linkID=@mysql_connect("localhost","root&q ...

  8. 从Mysql数据库中导入导出表结构

    1.从Mysql数据库中导入sql表 很简单,只需要一个命令即可搞定:[root@localhost ~]# mysql -uroot -piweb_xxx_mysql iweb < modif ...

  9. 从SQLSERVER/MYSQL数据库中随机取一条或者N条记录

    从SQLSERVER/MYSQL数据库中随机取一条或者N条记录 很多人都知道使用rand()函数但是怎麽使用可能不是每个人都知道 建立测试表 USE [sss] GO ,NAME ) DEFAULT ...

随机推荐

  1. Java log4j slf4j 日志配置笔记

    http://www.cnblogs.com/Scott007/p/3269018.html 日志的打印,在程序中是必不可少的,如果需要将不同的日志打印到不同的地方,则需要定义不同的Appender, ...

  2. Linux文本编辑器(九)

    [教程主题]:Linux文本编辑器 [1]vi vi编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任 何最新的文本编辑器,这里只是简单地介绍一下它的用法和一小部分指令. 由于对U ...

  3. C51寄存器

    EA   全局中断允许位 ET2 定时器/计时器2中断允许位 ES 串行口中断允许位 ET1 定时器/计时器1中断允许位 EX1 外部中断1中断允许位 ET0 定时器/计时器0中断允许位 EX0 外部 ...

  4. svn 怎么直接同步指定服务器的某个文件夹

    背景:首先在svn代码库了,我直接从服务器上拖了一个文件夹下来,但是没有显示svn相关信息(比如:左下角的勾勾).这个时候因为直接拖动下来的时候没有生成对应的.svn文件,所以导致. 解决办法: 选中 ...

  5. android将应用中图片保存到系统相册并显示

    我应用到的场景是程序中在视频通讯时截图,将截图保存到本地相册中 /*** @param bmp 获取的bitmap数据 * @param picName 自定义的图片名*/ public static ...

  6. jQuery 与 prototype 共存

    方法一: <html>   <head>     <script src="prototype.js"></script>     ...

  7. 关于Unity中从服务器下载资源压缩包AssetBundle的步骤

    AssetBundle 1: 在Unity中,能为用户存储资源的一种压缩格式的打包集合,他可以存任意一种Unity引擎可以识别的资源: 模型,音频,纹理图,动画, 开发者自定义的二进制文件; 2: 这 ...

  8. linux mongodb数据库的安装

    折腾两天, 前领导留下的烂摊子,前天忽然挂掉了, 整个公司就我会linux, 奶奶的, 一言难尽. 下面记录下怎么安装mongodb, 前面是从菜鸟教程复制来的 1. 下载 MongoDB 提供了 l ...

  9. qualcomm compile instructions

    qualcomm编译指令 Compile the Entire Android Software source build/envsetup.sh lunch msm8909-userdebug ma ...

  10. SpringBoot系列三:SpringBoot基本概念(统一父 pom 管理、SpringBoot 代码测试、启动注解分析、配置访问路径、使用内置对象、项目打包发布)

    声明:本文来源于MLDN培训视频的课堂笔记,写在这里只是为了方便查阅. 1.了解SpringBoot的基本概念 2.具体内容 在之前所建立的 SpringBoot 项目只是根据官方文档实现的一个基础程 ...