我正在使用laravel和mysql 5.7以及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";
我什么都没有。
此外,JSONèU还包含一些很好的功能:
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