mysql 5.7 JSON 基础操作记录

1.查询JSON数据里的数值

JSON_EXTRACT(字段,'$.名称'); 

表名:depts

idnamejson_value
1哈哈哈{"age": 10, "arr": [10, 11], "name": "哈哈"}
2Xoxoxo{"age": 15, "arr": [10, 11, 18], "name": "Xoxoxo"}
3iswer{"age": 18, "arr": [16, 19], "name": "iswer"}

例子:SELECT id,`name`,JSON_EXTRACT(json_value,'$.name') as json_value from depts(查询结果有引号)

使用: JSON_UNQUOTE 可以去除引号

SELECT id,`name`,JSON_UNQUOTE(JSON_EXTRACT(json_value,'$.name')) as json_value from depts

idnamejson_value
1哈哈哈"哈哈"
2Xoxoxo"Xoxoxo"
3iswer"iswer"

也可以在where中使用

SELECT id,`name` from depts WHERE JSON_EXTRACT(json_value,'$.age') >= 15

idname
2Xoxoxo
3iswer

2.查询数据是否存在(成功返回1 失败返回0)

JSON_CONTAINS 判断是否包含某个json值

where JSON_CONTAINS(JSON_ARRAY(10,11,18),JSON_EXTRACT(json_value,'$.arr'))  //查询arr数组中,已有数据等于(10,11,18)的,不能有多余的,可以缺少  (如果查询的是 10,11 只会查出id为1的 因为 id 韦为 2的数据中 有多余的18)

idnamejson_value
1哈哈哈{"age": 10, "arr": [10, 11], "name": "哈哈"}
2Xoxoxo{"age": 15, "arr": [10, 11, 18], "name": "Xoxoxo"}

 where JSON_CONTAINS(JSON_EXTRACT(json_value,'$.arr'),JSON_ARRAY(10,11))  //查询arr数组中同时包含10和11的数据

idnamejson_value
1哈哈哈{"age": 10, "arr": [10, 11], "name": "哈哈"}
2Xoxoxo{"age": 15, "arr": [10, 11, 18], "name": "Xoxoxo"}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值