在对象数组中搜索具有特定值的特定键
Posted
技术标签:
【中文标题】在对象数组中搜索具有特定值的特定键【英文标题】:Search an array of objects for specific key having a certain value 【发布时间】:2021-12-12 19:49:21 【问题描述】:我想从 mysql 表中的一个表中检索所有行,该表中有一个名为 items
的 JSON 列,内容如下:
["code":"MH005","qte":1,"totalpriceItem":"28.00","code":"MH027","qte":1,"totalpriceItem":"28.00"]
["code":"MH027","qte":1,"totalpriceItem":"30.00"]
["code":"MH024","qte":1,"totalpriceItem":"28.00","code":"MH028","qte":1,"totalpriceItem":"28.00","code":"MH027","qte":1,"totalpriceItem":"28.00"]
["code":"MH028","qte":1,"totalpriceItem":"30.00"]
现在我希望能够选择键 code
具有值 MH027
的所有行。
我试过了,但没有成功:
SELECT *
FROM `transactions`
WHERE JSON_CONTAINS(`item`, 'MH027', '$[*].code')
非常感谢任何帮助。
【问题讨论】:
您使用的是什么版本的 MySQL?Items.Row1
、Items.Row2
等到底是什么意思
Mysql版本:mysql 8.0.18 & mariaDB 10.4.10 表示插入表中每一行的JSON字段内容
【参考方案1】:
如果我理解正确,您需要使用JSON_CONTAINS
,如下所示:
SELECT *
FROM transactions
WHERE JSON_CONTAINS(item, '"code": "MH027"', '$')
第二个参数必须是有效的 JSON。如果值是动态的或可能包含特殊字符,您可以使用 JSON_OBJECT('code', 'MH028')
。
【讨论】:
非常感谢您的帮助 嘿,很抱歉再次打扰我知道这是一个已回答的问题,但我只想知道如何调整它,以便我可以选择项目以“MH%”开头的所有交易跨度> 那将是一个不同的问题。我会使用JSON_TABLE
。
你能指点我吗?以上是关于在对象数组中搜索具有特定值的特定键的主要内容,如果未能解决你的问题,请参考以下文章