带数组的MariaDB JSON函数

技术爱好者

我将JSON数组作为字符串存储在MariaDB表中。当数组中的某些键值存在时,我想返回行。

我进行了以下测试。

set @json='[{"name":"Albert","state":"IL"},{"name":"John","state":"CA"}]'

执行以下查询...

select json_value(@json,'$[0].name')='Albert'

它给了我想要的结果是...

1

甚至以下查询也给了我相同的结果(可能是“ *”被视为第一个元素)...

select json_value(@json,'$[*].name')='Albert'

但是当我在条件中提供第二个名字(“ John”)时,我没有得到任何结果...

select json_value(@json,'$[*].name')='John'

结果...

0

所以我的观察是,当我们提供数组索引时,“ json_value”函数能够返回所需的结果。

有没有一种方法可以避免指定数组索引并搜索所需的键值?

技术爱好者

正如@dbfiddle所评论的那样,我尝试使用JSON_SEARCH函数。

这是我试图获得所需结果的方法。

create table label_test(labels VARCHAR(1000));

insert into label_test values ('[{"name":"Albert","state":"IL"},{"name":"John","state":"CA"}]');

select * from label_test where JSON_SEARCH(labels,'all','John') like '"$[%].name"';

结果是整个行符合预期。

[{"name":"Albert","state":"IL"},{"name":"John","state":"CA"}]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章