由于某些需求,需要在MYSQL里存储json格式的数据。这里建立一个测试表:
CREATE TABLE `meishi`.`recipes_major` ( `id` INT(10) NOT NULL AUTO_INCREMENT , `json` JSON NOT NULL , PRIMARY KEY (`id`)) ENGINE = InnoDB;
然后插入测试数据:
INSERT INTO `recipes_major` (`id`, `json`) VALUES (NULL, '[{\"name\": \"牛肉\", \"value\": \"250g\"}, {\"name\": \"土豆\", \"value\": \"300g\"}, {\"name\": \"咖喱\", \"value\": \"80g\"}]');
我们就得到了一个使用json存储的表。
我们使用命令:
SELECT `json` FROM `recipes_major` WHERE `id`=1
可以得到以下数据:
[{"name": "牛肉", "value": "250g"}, {"name": "土豆", "value": "300g"}, {"name": "咖喱", "value": "80g"}]
如果我们需要读取牛肉的信息:
SELECT `json`,`json`->"$[0]" as show1 FROM recipes_major
显示为:
{"name": "牛肉", "value": "250g"}
如果想看name的值:
SELECT `json`->"$[0].name" as name FROM recipes_major
这里会显示:
"牛肉"
去除“双引号可以使用:
SELECT `json`->>"$[0].name" as name FROM recipes_major
好了,现在我想通过条件去查询:
SELECT `id` FROM recipes_major WHERE `json`->>"$[0].name"="牛肉"
这样就可以查询出来ID的值。
其表达式为:该json列->'$.键'与JSON_EXTRACT(json列 , '$.键')等效使用。如果传入的不是一个有效的键,则返回Empty set。该表达式可以用于SELECT查询列表 ,WHERE/HAVING , ORDER/GROUP BY中,但它不能用于设置值。
除非注明,网络人的文章均为原创,转载请以链接形式标明本文地址:https://www.55mx.com/post/45
《Mysql 5.7以上版本怎么样使用JSON存储数据与查询》的网友评论(0)