mysql 中 json的使用
1. 表的创建
CREATE TABLE `json` (
`id` bigint(22) unsigned NOT NULL AUTO_INCREMENT COMMENT 'id',
`json` json DEFAULT NULL COMMENT 'json',
PRIMARY KEY ( `id` )
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
2. 数据增加
-
[1, 2, 3, 4]
INSERT INTO json ( `json`) VALUES ( JSON_ARRAY(1, 2, 3,4));
INSERT INTO json(`json`) VALUES ('[1, 2, 3, 4]');
-
{"a": 1, "b": "two"}
INSERT INTO json ( `json`) VALUES ( JSON_OBJECT("a", 1, "b", "2"));
INSERT INTO json ( `json`) VALUES ( '{"a":1, "b":"2"}');
INSERT INTO json ( `json`) VALUES ( JSON_MERGE('{"a":1}','{"b":"2"}'));
INSERT INTO json ( `json`) VALUES ( JSON_MERGE(JSON_OBJECT("a", 1),JSON_OBJECT("b", "2")) );
INSERT INTO json ( `json`) VALUES ( JSON_MERGE(JSON_OBJECT("a", 1),'{"b": "2"}') );
3. 查找
-
[1, 2, 3, 4]
# 查找到json字符串包含'1'
SELECT * FROM json where json_contains(json,'1') ;
# 查找json的第1个数为1
select * FROM json where json_extract(json, '$[0]') = 1;
# 查找json的第1个数为1(# 使用 JSON_EXTRACT 方法的简化形式 ‘->’)
select * from json where json->'$[0]' = 1;
-
{"a": 1, "b": "two"}
# 查找到json字符串key名为a,值为1
select * FROM json where json_extract(json, '$.a') = 1;
# 查找到json字符串key名为a,值为1(使用 JSON_EXTRACT 方法的简化形式 ‘->’)
select * from json where json->'$.a' =1;