gpt4 book ai didi

sql - MariaDB JSON 函数与数组

转载 作者:行者123 更新时间:2023-12-02 20:33:54 24 4
gpt4 key购买 nike

我将 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"}]

关于sql - MariaDB JSON 函数与数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47727503/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com