1、json对象
1.1、方法
- 使用对象操作的方法进行查询:
字段->'$.json属性'
- 使用函数进行查询:
json_extract(字段, '$.json属性')
- 获取JSON数组/对象长度:
JSON_LENGTH()
1.2、数据
CREATE TABLE `test` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增ID',
`goods_sn` varchar(25) NOT NULL DEFAULT '' COMMENT '商品编码',
`desc_attr` json NOT NULL COMMENT '描述属性',
PRIMARY KEY (`id`)
) ENGINE=InnoDB COMMENT='TEST';
INSERT INTO `test`.`test`(`id`, `goods_sn`, `desc_attr`) VALUES (1, 'A0001', '{\"tag\": [\"GRS\", \"GOTS\"], \"size\": \"M\", \"color\": \"红色\", \"material\": \"尼龙\"}');
INSERT INTO `test`.`test`(`id`, `goods_sn`, `desc_attr`) VALUES (2, 'A0002', '{\"tag\": [\"GRS\", \"GOTS\", \"MTD\"], \"size\": \"LA\", \"color\": \"黄色\", \"material\": \"纯棉\"}');
{
"tag": ["GRS", "GOTS"],
"size": "M",
"color": "红色",
"material": "尼龙"
}
1.3、查询
2、json数组
2.1、方法
- 对象操作方式查询:
字段->'$[0].属性'
- 使用函数查询:
JSON_CONTAINS(字段,JSON_OBJECT('json属性', '内容'))
- 获取JSON数组/对象长度:
JSON_LENGTH()
2.2、数据
CREATE TABLE `test2` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增ID',
`goods_sn` varchar(25) NOT NULL DEFAULT '' COMMENT '商品编码',
`desc_attrs` json NOT NULL COMMENT '描述属性,多个',
PRIMARY KEY (`id`)
) ENGINE=InnoDB COMMENT='TEST2';
INSERT INTO `test`.`test2`(`id`, `goods_sn`, `desc_attrs`) VALUES (1, 'A0001', '[{\"tag\": [\"GRS\", \"GOTS\"], \"size\": \"M\", \"color\": \"红色\", \"material\": \"尼龙\"}, {\"tag\": [\"GRS\", \"GOTS\", \"MTD\"], \"size\": \"LA\", \"color\": \"黄色\", \"material\": \"纯棉\"}]');
INSERT INTO `test`.`test2`(`id`, `goods_sn`, `desc_attrs`) VALUES (2, 'A0002', '[{\"tag\": [\"GRS\", \"GOTS\"], \"size\": \"M\", \"color\": \"红色\", \"material\": \"尼龙\"}, {\"tag\": [\"GRS\", \"GOTS\", \"MTD\"], \"link\": \"xxx\", \"size\": \"LA\", \"color\": \"黄色\", \"material\": \"纯棉\"}]');
INSERT INTO `test`.`test2`(`id`, `goods_sn`, `desc_attrs`) VALUES (3, 'A0003', '[]');
[
{
"tag":["GRS", "GOTS"],
"size":"M",
"color":"红色",
"material":"尼龙"
},
{
"tag":["GRS", "GOTS", "MTD"],
"size":"LA",
"color":"黄色",
"material":"纯棉"
}
]
2.3、查询