mysql增刪改查json中的某個字段


准備

創建表

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' );

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM