簡體   English   中英

帶數組的MariaDB JSON函數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM