我的问题是在搜索mysql的JSON数据类型时搜索json数组的内容.
所以,如果我在mysql表中有两行,则调用json字段foo.
第一行有:
{
"items": [
{"type": "bar"}
]
}
Run Code Online (Sandbox Code Playgroud)
第二行有:
{
"items": [
{"type": "baz"}
]
}
Run Code Online (Sandbox Code Playgroud)
我可以跑
select `foo`->"$.items[0].type" from `jsontest`
Run Code Online (Sandbox Code Playgroud)
返回2结果:bar和baz
我可以跑
select `id` from `jsontest` where `foo`->"$.items[0].type" = "bar"
Run Code Online (Sandbox Code Playgroud)
返回1结果:1- 即.第一行的id.
在MySQL的文档状态,您可以使用[*],以"评估在一个JSON阵列中的所有元素的值".
但是,以下查询返回零项:
select `id` from `jsontest` where `foo`->"$.items[*].type" = "bar"
Run Code Online (Sandbox Code Playgroud)
我的查询有什么问题?
ole*_*gsv 10
进行以下查询:
select id, `foo`->"$.items[*].type[0]" from `jsontest`;
Run Code Online (Sandbox Code Playgroud)
您会注意到返回的值显示为"[bar]",即JSON数组.
select * from `jsontest`
where `foo`->"$.items[*].type" = JSON_ARRAY('bar');
Run Code Online (Sandbox Code Playgroud)
无论如何,以下查询也应该起作用:
select id from `jsontest` where JSON_SEARCH(`foo`, 'all','bar') is not null;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2131 次 |
| 最近记录: |