MySQL中JSON_CONTAINS函數(shù)詳細用法示例?及場景
前言
MySQL中的JSON_CONTAINS函數(shù)用于檢查一個JSON文檔(目標)是否包含另一個JSON文檔(搜索值)。以下是其詳細用法:
函數(shù)語法?
JSON_CONTAINS(target_json, search_json [, path])
- ?target_json?:要檢查的目標JSON文檔。
- ?search_json?:要搜索的JSON值或結(jié)構(gòu)。
- ?path?(可選):指定在目標JSON中的具體路徑。若未指定,默認檢查整個文檔。
?返回值?:
1:目標包含搜索值。0:目標不包含搜索值。NULL:參數(shù)為NULL或路徑不存在。
?使用場景和示例?
?1. 檢查數(shù)組是否包含元素?
?示例表?:
CREATE TABLE users ( id INT PRIMARY KEY, tags JSON ); INSERT INTO users VALUES (1, '["mysql", "database", "developer"]'), (2, '["python", "web", "tester"]'), (3, '["java", "backend", "developer"]');?查詢包含"developer"標簽的用戶?:
SELECT * FROM users WHERE JSON_CONTAINS(tags, '"developer"', '$');
或簡寫:
SELECT * FROM users WHERE JSON_CONTAINS(tags, '"developer"');
?注意?:字符串需用雙引號包裹,外層用單引號。
?2. 檢查對象是否包含鍵值對?
?示例數(shù)據(jù)?:
{"name": "Alice", "age": 30, "skills": ["SQL", "Java"]}?查詢包含"name": "Alice"的對象?:
SELECT * FROM profiles WHERE JSON_CONTAINS(data, '{"name": "Alice"}');
?3. 嵌套結(jié)構(gòu)和路徑參數(shù)?
?示例數(shù)據(jù)?:
{"department": {"team": ["Alice", "Bob"], "id": 101}}?**檢查
team數(shù)組是否包含"Bob"**?:SELECT JSON_CONTAINS( '{"department": {"team": ["Alice", "Bob"], "id": 101}}', '"Bob"', '$.department.team' ); -- 返回1
?4. 數(shù)據(jù)類型嚴格匹配?
JSON區(qū)分數(shù)據(jù)類型,如數(shù)字3和字符串"3"不匹配:
SELECT JSON_CONTAINS('[1, 2, 3]', '3'); -- 返回1(數(shù)值3)
SELECT JSON_CONTAINS('[1, 2, "3"]', '"3"'); -- 返回1(字符串"3")
SELECT JSON_CONTAINS('[1, 2, 3]', '"3"'); -- 返回0(類型不匹配)?5. 通配符路徑?
?示例數(shù)據(jù)?:
{"employees": [{"name": "Alice"}, {"name": "Bob"}]}?**檢查任意
name是否為"Bob"**?:SELECT JSON_CONTAINS( '{"employees": [{"name": "Alice"}, {"name": "Bob"}]}', '"Bob"', '$.employees[*].name' ); -- 返回1
?注意事項?
?路徑存在性?:若路徑不存在,返回
NULL。SELECT JSON_CONTAINS('{"a": 1}', '1', '$.b'); -- 返回NULL?對象匹配?:搜索對象時,必須完全包含所有鍵值對。
SELECT JSON_CONTAINS('{"a":1, "b":2}', '{"a":1}'); -- 返回1 SELECT JSON_CONTAINS('{"a":1}', '{"a":1, "b":2}'); -- 返回0?數(shù)組子集?:搜索數(shù)組時,目標數(shù)組需包含搜索數(shù)組所有元素(順序無關(guān))。
SELECT JSON_CONTAINS('[1,2,3]', '[3,1]'); -- 返回1 SELECT JSON_CONTAINS('[1,2,3]', '[1,4]'); -- 返回0
?總結(jié)?
JSON_CONTAINS適用于驗證JSON結(jié)構(gòu)中的存在性,需注意:
- 正確使用路徑和數(shù)據(jù)類型。
- 對象需完全匹配鍵值對,數(shù)組需包含所有元素。
- 結(jié)合路徑通配符(
*)可靈活處理嵌套數(shù)據(jù)。
到此這篇關(guān)于MySQL中JSON_CONTAINS函數(shù)詳細用法示例?及場景的文章就介紹到這了,更多相關(guān)MySQL JSON_CONTAINS函數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MySQL校對規(guī)則(COLLATION)的具體使用
本文主要介紹了MySQL校對規(guī)則(COLLATION)的具體使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-08-08
mysql啟動時出現(xiàn)ERROR 2003 (HY000)問題的解決方法
這篇文章主要為大家詳細介紹了mysql啟動時出現(xiàn)ERROR 2003 (HY000問題的解決方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-03-03
SQL調(diào)優(yōu)核心戰(zhàn)法之索引失效場景與Explain深度解析
在數(shù)據(jù)庫性能治理中,SQL調(diào)優(yōu)是提升系統(tǒng)吞吐量的核心抓手,本文通過六大典型索引失效場景剖析、Explain執(zhí)行計劃深度解讀及權(quán)威優(yōu)化策略,感興趣的小伙伴可以了解下2025-12-12
2022最新版MySQL 8.0.30 安裝及配置教程(小白入門)
這篇文章主要介紹了2022最新版MySQL 8.0.30 安裝及配置教程,安裝過程算是比較簡單的,今天給大家分享的此文比較適合mysql數(shù)據(jù)庫的小白,需要的朋友可以參考下2022-09-09

