MYSQL常用的JSON函数 JSON_SET,JSON_KEY

数据准备

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”}}