在对象数组中搜索具有特定值的特定键

Search an array of objects for specific key having a certain value

我想从 MySQL table 中的 table 中检索所有行,其中有一个名为 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"}]

现在我希望能够 select 键 code 具有值 MH027 的所有行。

我已经试过了,但没有成功:

SELECT *
FROM `transactions`
WHERE JSON_CONTAINS(`item`, 'MH027', '$[*].code')

非常感谢任何帮助。

如果我理解正确你需要使用JSON_CONTAINS如下:

SELECT *
FROM transactions
WHERE JSON_CONTAINS(item, '{"code": "MH027"}', '$')

第二个参数必须有效JSON。如果值是动态的或可能包含特殊字符,则可以使用 JSON_OBJECT('code', 'MH028')