网络人 > PHP技术 > Mysql 5.7以上版本怎么样使用JSON存储数据与查询

Mysql 5.7以上版本怎么样使用JSON存储数据与查询

由于某些需求,需要在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中,但它不能用于设置值。

除非注明,网络人的文章均为原创,转载请以链接形式标明本文地址:http://www.neter8.com/php/45.html

下一篇 »:Linux/CentOS7 Swap扩容的方法«上一篇:解决Redis由于连接过多导致的Uncaught RedisException: Cannot assign requeste问题

《Mysql 5.7以上版本怎么样使用JSON存储数据与查询》的网友评论(0)

感谢打赏!