Я использую Laravel и MySQL 5.7 с JSON.Вот мои данные json из базы данных.
mysql> select goods from packet_code where id=582 \G
*************************** 1. row ***************************
goods:
[
{"code": "S87719300077661", "size": "7", "loged_by": "93,xx"},
{"code": "S87719300094874", "size": "9", "loged_by": "93,xx"},
{"code": "S87719300112648", "size": "11", "loged_by": "93,xx"}
]
1 row in set (0.05 sec)
Я пробовал этот запрос;
select * from packet_code where goods->'$[0].code'="S87719300077661;"
Он работает нормально, и я получаю результат.
Но дело в том, что элементы хранятся не по порядку, они могут храниться во второй или третьей позиции.
Когда я пытаюсь это
select * from packet_code where goods->'$[*].code'="S87719300077661";
Iничего не получить.Также JSON_CONTAINS работает нормально:
select * from packet_code where JSON_CONTAINS(goods,'"S87719300077661"','$[0].code');
Но когда я использую подстановочный знак
select * from packet_code where JSON_CONTAINS(goods,'"S87719300077661"','$[*].code');
, я получаю эту ошибку:
In this situation, path expressions may not contain the * and ** tokens.
Пробное изменение'$[0].code'
до $[0 to last].code
тоже не работают.