【2021/12/18】MySQL的json查詢之json_contains、json_contains_path


我個人之所有使用MySQL的這個json特性,最大的原因就是json_contains這個用法,我們只關注前倆個參數,這個就像我們說的“大海撈針”,第一個參數是“大海”,第二個參數是“針”,就是判斷“大海”里面是否有“針”。

數據表
member

例一

select * from member where json_contains(info, '4');
結果

特別注意,如果參數不是數據庫中的字段的話,一定要加引號,就算是整型也得加

例二

select * from member where json_contains(json_array(1,2,3,4,5,6,7), info);
結果

例三

select * from member where json_contains(json_array(21,31,41,51), json_array(age));
結果

這種用法的結果和in是一樣的,也跟前面我們講json_array一樣,區別在於一個是數據庫本身就是array,另外一個是我們自己創建

json_contains_path

這個函數用來判斷是否有鍵名的,我的看法是這個函數基本用不到,數據庫結果基本都是提前設計好的,不需要判斷。第一個參數判斷的目標,第二個參數是one或者all,第三個參數指定的鍵名,以后的參數都是鍵名,如果第二個參數是one,則其中一個鍵名存在則返回正確;如果第二個參數是all,則所有鍵名都存在才返回正確。

例一

select * from member where json_contains_path(info, 'one', '$[0]');
結果

例二

select * from member where json_contains_path(info, 'one', '$[3]');
結果

例三

select * from member where json_contains_path(info, 'one', '$.a');
結果

留言

點擊留言


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM