mysql5.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中,但它不能用于设置值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值