mysql增删改查json中的某个字段
2024-10-21 12:44:30
创建表
1 CREATE TABLE t_json(id INT PRIMARY KEY, NAME VARCHAR(20), info JSON);
插入记录
1 INSERT INTO t_json(id,sname,info) VALUES(1 , 'test' , '{"time":"2017-01-01 13:00:00","ip":"192.168.1.1","result":"fail"}' );
2 INSERT INTO t_json(id,sname,info) VALUES(2 , 'my' ,JSON_OBJECT( "time" ,NOW(), 'ip' , '192.168.1.1' , 'result' , 'fail' ));
查询
查询有多少个键
1 SELECT id, json_keys(info) AS "keys" FROM t_json;
查询字段值
方法1:
1 SELECT json_extract(字段名,'$.json结构') FROM 表名;
如果json里有双引号,那这样取出来的数据也带双引号,要去掉就使用REPLACE函数
例如:
ps_push_data表里的push_data字段存的数据为:{"carRenewalInfoVo":{"licence":"浙AF55Z0"},"code":"1","msg":"成功"}
使用sql
1 SELECT REPLACE(json_extract(push_data,'$.carRenewalInfoVo.licence'),'"','') FROM ps_push_data;
取出来的就是:浙AF55Z0
值得注意的是,只有MySQL5.7及以上版本才支持json数据的操作
方法2:
1 SELECT 字段名 -> '$.json结构' FROM 表名;
同上,如果json里有双引号,那这样取出来的数据也带双引号,要去掉就要使用另一个方法:
1 SELECT 字段名 ->> '$.json结构' FROM 表名;
例如:
ps_push_data表里的push_data字段存的数据为:{"carRenewalInfoVo":{"licence":"浙AF55Z0"},"code":"1","msg":"成功"}
取出来的就是:浙AF55Z0
值得注意的是,只有MySQL5.7及以上版本才支持json数据的操作
删除键
1 UPDATE t_json SET info = json_remove(info, '$.ip' );
增加键
1 UPDATE t_json SET info = json_set(info, '$.ip' , '192.168.1.1' );
变更键
1 UPDATE t_json SET info = json_set(info, '$.ip' , '192.168.1.2' );
最新文章
- 移动端API架构 统一Proxy还是各自为政?
- POJ题目排序的Java程序
- Java ResourceBundle类的使用
- 图片javascript缩小
- Mybatis学习--Mapper.xml映射文件
- elasticsearch【更新】操作
- 20150618_Andriod _KSOAP2_多线程
- Oracle11g使用exp导出空表
- ios PromiseKit
- Hibernate学习笔记--环境搭建及运行
- 安装spark单机环境
- SpringMVC【开发Controller】详解
- VB.NET或C#报错:You must hava a license to use this ActiveX control.
- Redis-安装篇
- [HEOI2016/TJOI2016]排序
- 简单的TabLayout+Fragment选项卡
- [拍摄]『ROSE 拆解』SONY 摄像机镜头拆解。
- mac电脑使用,开发环境配置指南
- csv 文件读取(input)和截分(split)方法
- numpy得到数组的index