MYSQL常用的JSON函数
数据准备
CREATE TABLE `t_json` (
`id` int(11) NOT NULL,
`content` text COMMENT 'json格式字符串',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
insert into t_json values (1,'{}');
JSON_SET 替换已存在的值,不存在就新增
修改或新增指定的值
update t_json set content = JSON_SET(content,'$.id',1);
update t_json set content = JSON_SET(content,'$.name','jack');
update t_json set content = JSON_SET(content,'$.wife',JSON_OBJECT('name','zhang','age',24));
{“id”: 1, “name”: “jack”, “wife”: {“age”: 24, “name”: “zhang”}}
JSON_EXTRACT 查询指定的key 值
select JSON_EXTRACT(content,'$.name') from t_json;
“jack”
select JSON_EXTRACT(content,'$.wife.name') from t_json;
“zhang”
JSON_KEYS 查看指定路径的key
select JSON_KEYS(content,'$') from t_json;
[“id”, “name”, “wife”]
select JSON_KEYS(content,'$.wife') from t_json;
[“age”, “name”]
JSON_REMOVE 删除指定的key
update t_json set content = JSON_SET(content,'$.wife2',JSON_OBJECT('name','小三','age',18,'hobby','money'));
{“id”: 1, “name”: “jack”, “wife”: {“age”: 24, “name”: “zhang”}, “wife2”: {“age”: 18, “name”: “小三”, “hobby”: “money”}}
update t_json set content = JSON_REMOVE(content,'$.wife2.hobby') ;
{“id”: 1, “name”: “jack”, “wife”: {“age”: 24, “name”: “zhang”}, “wife2”: {“age”: 18, “name”: “小三”}}
update t_json set content = JSON_REMOVE(content,'$.wife2') ;
{“id”: 1, “name”: “jack”, “wife”: {“age”: 24, “name”: “zhang”}}