mysql数据库中,如何对json数据类型的值进行修改?通过json_set函数对json字段值进行修改?
需求描述:
今天在看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字段值进行修改?的更多相关文章
- MYSQL数据库中,常见的数据类型有哪些?它们与java中的数据类型如何对应
A.常规 映射 integer 或者 int int 或者 java.lang.Integer INTEGER 4 字节 long long Long BIGINT 8 字节 short short ...
- MySQL存储引擎的实际应用以及对MySQL数据库中各主要存储引擎的独特特点的描述
MySQL存储引擎的实际应用以及对MySQL数据库中各主要存储引擎的独特特点的描述: 1.MySQL有多种存储引擎: MyISAM.InnoDB.MERGE.MEMORY(HEAP).BDB(Berk ...
- C#实现MySQL数据库中的blob数据存储
在MySQL数据库中,有一种blob数据类型,用来存储文件.C#编程语言操作MySQL数据库需要使用MySQL官方组件MySQL.Data.dll. Mysql.Data.dll(6.9.6)组件下载 ...
- node 爬虫 --- 将爬取到的数据,保存到 mysql 数据库中
步骤一:安装必要模块 (1)cheerio模块 ,一个类似jQuery的选择器模块,分析HTML利器. (2)request模块,让http请求变的更加简单 (3)mysql模块,node连接mysq ...
- 如何从mysql数据库中取到随机的记录
如何从mysql数据库中取到随机的记录 一.总结 一句话总结:用随机函数newID(),select top N * from table_name order by newid() ----N是一个 ...
- MySQL数据库中delimiter的作用概述
以下的文章主要是向大家描述的是MySQL数据库中delimiter的作用是什么?我们一般都认为这个命令和存储过程关系不大,到底是不是这样的呢?以下的文章将会给你相关的知识,望你会有所收获. 其实就是告 ...
- PHP往mysql数据库中写入中文失败
该类问题解决办法就是 在建立数据库连接之后,将该连接的编码方式改为中文. 代码如下: $linkID=@mysql_connect("localhost","root&q ...
- 从Mysql数据库中导入导出表结构
1.从Mysql数据库中导入sql表 很简单,只需要一个命令即可搞定:[root@localhost ~]# mysql -uroot -piweb_xxx_mysql iweb < modif ...
- 从SQLSERVER/MYSQL数据库中随机取一条或者N条记录
从SQLSERVER/MYSQL数据库中随机取一条或者N条记录 很多人都知道使用rand()函数但是怎麽使用可能不是每个人都知道 建立测试表 USE [sss] GO ,NAME ) DEFAULT ...
随机推荐
- 阿里云 Caused by: redis.clients.jedis.exceptions.JedisDataException: ERR invalid password
如果你是买的阿里云的redis服务的话,不要被这个ERR invalid password所迷惑了. 你应该去检查一下你买的服务有没有设置白名单. 像mysql和mongodb的服务如果连不上的话也可 ...
- <[长期赢利:股票价值投资方法]>读书笔记
书在这里 风险是因为不够专业 在股市里,要不断拓宽自己的眼界 投资如长跑,贵在坚持 长线为主,短线为辅:重视选股,减少盲目:耐心等待,春天回来 除了要与银行利息比以外,还要了解当时股票的平均市盈率,再 ...
- w3svc无法启动
w3svc无法启动 运行命令regedit,打开注册表编辑器,进入:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP]: a) Cha ...
- MinGW32和64位交叉编译环境的安装和使用
原文出处: CompileGraphics Magick, Boost, Botan and QT with MinGW64 under Windows 7 64 http://www.kinetic ...
- 自然语言交流系统 phxnet团队 创新实训 个人博客 (十三)
关于java socket的一些总结: Java Socket通信有很多的时候需要我们不断的学习.方面效率虽然不及C与C++但它以灵活语言优势,为大家广为使用. 本文就对在使用java做通信方面程序时 ...
- 2015年第六届蓝桥杯C/C++B组省赛题目解析
一.奖券数目 有些人很迷信数字,比如带“4”的数字,认为和“死”谐音,就觉得不吉利.虽然这些说法纯属无稽之谈,但有时还要迎合大众的需求.某抽奖活动的奖券号码是5位数(10000-99999),要求其中 ...
- nginx rewrite和根据url参数location
最近项目中涉及到旧老项目迁移,需要在nginx上做些配置,所以简单学习了下,好记性不如烂笔头,先记下来. rewrite 首先查看下nginx是否支持rewrite: ./nginx -V 不支持说明 ...
- Java如何格式化月份?
在Java中,如何以MMMM格式格式化时间? 这个示例使用SimpleDateFormat('MMMM')构造函数和SimpleDateFormat类的sdf.format(date)方法来格式化月份 ...
- Swing文本域的编辑
1..setEditable(false); 设置文本域不可编辑 2..setHorizontalAlignment(JTextField.CENTER); // 设置文本的水平对齐方式 有效值包括: ...
- MySQL删除数据库时的错误
From: http://blog.csdn.net/mydeman/article/details/6843398 由于在9月30号粗暴地打断了一个导入进程,今天发现MySQL竟然不能启动了,只好卸 ...