mysql json数组匹配数组

3 篇文章 0 订阅

最近写项目,用到了mysql,5.7.13后的json格式保存数据。刚刚涉及到查询条件在json数组里。

数据格式如下:

因为是数组,不管是用

select * from tableName   WHERE column->'$.name' = '周年庆'

select * from tableName   WHERE column->>'$.name' = '周年庆'

都无法查询出数据.

那匹配数据的sql如何写呢?

单条件匹配和多条件匹配又是怎么样?

要匹配json 数组的数据值 得用 JSON_CONTAINS 函数

select * from tableName t  
where JSON_CONTAINS(column,JSON_OBJECT('name','周年庆'))

问题解决,嘴角上扬

注意:以上是匹配json 对象,JSON_OBJECT('name','周年庆')这里是创建了一个json 对象

如果只匹配某个值就是

其实就是JSON_CONTAINS(json,值)

例如:

SELECT  * FROM work_order WHERE JSON_CONTAINS(content ->'$[*].patentNo','22')

看看content ->'$[*].patentNo' 对应的json

 

 

问题二 例如我要匹配 name = 周年庆,addtime = 2017-10-12 对象该怎么写?

select * from tableName t  
where JSON_CONTAINS(column,JSON_OBJECT('key','value','key','value'))

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
精准匹配JSON数组可以使用MySQLJSON_CONTAINS函数。该函数用于检查一个JSON数组是否包含指定的元素或子数组。它的语法如下: JSON_CONTAINS(json_doc, val\[, path\]) 其中,json_doc是要搜索的JSON文档,val是要匹配的值,path是可选的路径参数,用于指定要搜索的子数组。 例如,如果我们有一个名为data的JSON列,其中包含一个名为numbers的数组,我们可以使用JSON_CONTAINS函数来精确匹配数组中的元素。假设我们要查找数组中是否包含值为5的元素,可以使用以下查询: SELECT * FROM table_name WHERE JSON_CONTAINS(data->'$.numbers', '5') 这将返回包含值为5的元素的行。 请注意,JSON_CONTAINS函数只能用于JSON数组的精确匹配。如果要进行更复杂的匹配,如模糊匹配或范围匹配,可能需要使用其他函数,如JSON_SEARCH或JSON_VALUE。 #### 引用[.reference_title] - *1* *3* [MySQL 查询 JSON字段匹配](https://blog.csdn.net/weixin_44647098/article/details/129895113)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [mysql查询精确匹配逗号间隔的数据 find_in_set](https://blog.csdn.net/wangxinxinsj/article/details/129243100)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值