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

例一
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');

留言
點擊留言
