mysql增删改查json中的某个字段
2023-09-11 14:19:34 时间
准备
创建表
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' );
相关文章
- Navicat Premium连接MySQL 1251错误和Mysql初始化root密码和允许远程访问
- MySQL字段自增长AUTO_INCREMENT的学习笔记
- 【MySql】mysql 字段个数的限制
- 【MySql】innobackupex 增量备份和恢复
- 【Mysql】Mysql Json类型或Text类型可以建索引吗?
- mysql 主从
- MYSQL中的乐观锁实现(MVCC)简析
- mysql启动时报错:Starting MySQL... ERROR! The server quit without updating PID file (/opt/mysql/data/mysql.pid) 的解决方法
- ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (111)
- MySQL--执行mysql脚本及其脚本编写
- mysql binlog设置
- mysql union 与 union all 语法及用法
- mysql管理
- 为什么MySQL的主键查询这么快
- MYSQL导入数据报错|MYSQL导入超大文件报错|MYSQL导入大数据库报错:2006 - MySQL server has gone away
- JavaSE学习总结(十九)—— Java Web 综合应用(JSP、Servlet、IDEA、MySQL、JUnit、AJAX、JSON)
- JDBC连接MySQL数据库及演示样例
- MySql 查询表中字段的数据类型
- 脚本工具---自动解析mysql建表语句,生成sqlalchemy表对象声明
- Mysql报错:Can't connect to local MySQL server through socket '/tmp/mysql.sock'
- Mysql中外键详解
- Jackson转换json大写_关于jackson转化json的原理_jackson序列化和反序列化Json