【2021/12/18】MySQL的json查询之json_contains、json_contains_path

我个人之所有使用MySQL的这个json特性,最大的原因就是json_contains这个用法,我们只关注前俩个参数,这个就像我们说的“大海捞针”,第一个参数是“大海”,第二个参数是“针”,就是判断“大海”里面是否有“针”。

数据表
member

例一

select * from member where json_contains(info, '4');
结果

特别注意,如果参数不是数据库中的字段的话,一定要加引号,就算是整型也得加

例二

select * from member where json_contains(json_array(1,2,3,4,5,6,7), info);
结果

例三

select * from member where json_contains(json_array(21,31,41,51), json_array(age));
结果

这种用法的结果和in是一样的,也跟前面我们讲json_array一样,区别在于一个是数据库本身就是array,另外一个是我们自己创建

json_contains_path

这个函数用来判断是否有键名的,我的看法是这个函数基本用不到,数据库结果基本都是提前设计好的,不需要判断。第一个参数判断的目标,第二个参数是one或者all,第三个参数指定的键名,以后的参数都是键名,如果第二个参数是one,则其中一个键名存在则返回正确;如果第二个参数是all,则所有键名都存在才返回正确。

例一

select * from member where json_contains_path(info, 'one', '$[0]');
结果

例二

select * from member where json_contains_path(info, 'one', '$[3]');
结果

例三

select * from member where json_contains_path(info, 'one', '$.a');
结果

留言

点击留言

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值