[英]MariaDB JSON Functions with Arrays
我將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"}]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.