如何从mysql使用通配符查询json数据

时间:2018-10-27 02:25:13

标签: mysql json laravel

我正在使用带有json的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_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也不起作用。

1 个答案:

答案 0 :(得分:1)

一个选项是:

Launcher

请参见dbfiddle