在对象数组中搜索具有特定值的特定键
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')
。
我想从 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')
。