最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL中JSON_CONTAINS函數(shù)詳細用法示例?及場景

 更新時間:2025年06月19日 10:39:31   作者:悟能不能悟  
這篇文章主要介紹了MySQL中JSON_CONTAINS函數(shù)詳細用法示例?及場景的相關(guān)資料,MySQL JSON_CONTAINS檢查目標JSON是否包含搜索值,文中將用法介紹的非常詳細,需要的朋友可以參考下

前言

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中深分頁的五種常用方法整理

    Mysql中深分頁的五種常用方法整理

    在數(shù)據(jù)量非常大的情況下,深分頁查詢則變得很常見,這篇文章為大家整理了5個常用的方法,文中的示例代碼講解詳細,大家可以根據(jù)自己的需求進行選擇
    2025-03-03
  • MySQL校對規(guī)則(COLLATION)的具體使用

    MySQL校對規(guī)則(COLLATION)的具體使用

    本文主要介紹了MySQL校對規(guī)則(COLLATION)的具體使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-08-08
  • mysql啟動時出現(xiàn)ERROR 2003 (HY000)問題的解決方法

    mysql啟動時出現(xiàn)ERROR 2003 (HY000)問題的解決方法

    這篇文章主要為大家詳細介紹了mysql啟動時出現(xiàn)ERROR 2003 (HY000問題的解決方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • 由不同的索引更新解決MySQL死鎖套路

    由不同的索引更新解決MySQL死鎖套路

    前幾篇文章介紹了用源碼的方式來調(diào)試鎖相關(guān)的信息,這里同樣用這個工具來解決一個線上實際的死鎖案例,下面小編來簡單介紹下
    2019-05-05
  • SQL調(diào)優(yōu)核心戰(zhàn)法之索引失效場景與Explain深度解析

    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
  • 大幅提升MySQL中InnoDB的全表掃描速度的方法

    大幅提升MySQL中InnoDB的全表掃描速度的方法

    這篇文章主要介紹了大幅提升MySQL中InnoDB的全表掃描速度的方法,作者談到了預(yù)讀取和多次async I/O請求等方法,減小InnoDB對MySQL速度的影響,需要的朋友可以參考下
    2015-06-06
  • 2022最新版MySQL 8.0.30 安裝及配置教程(小白入門)

    2022最新版MySQL 8.0.30 安裝及配置教程(小白入門)

    這篇文章主要介紹了2022最新版MySQL 8.0.30 安裝及配置教程,安裝過程算是比較簡單的,今天給大家分享的此文比較適合mysql數(shù)據(jù)庫的小白,需要的朋友可以參考下
    2022-09-09
  • MySQL中IO問題的深入分析與優(yōu)化

    MySQL中IO問題的深入分析與優(yōu)化

    據(jù)庫作為存儲系統(tǒng),所有業(yè)務(wù)訪問數(shù)據(jù)的操作都會轉(zhuǎn)化為底層數(shù)據(jù)庫系統(tǒng)的IO行為,下面這篇文章主要給大家介紹了關(guān)于MySQL中IO問題的深入分析與優(yōu)化的相關(guān)資料,需要的朋友可以參考下
    2022-04-04
  • Mysql5.6啟動內(nèi)存占用過高解決方案

    Mysql5.6啟動內(nèi)存占用過高解決方案

    vps的內(nèi)存為512M,安裝好nginx,php等啟動起來,mysql死活啟動不起來看了日志只看到對應(yīng)pid被結(jié)束了,后跟蹤看發(fā)現(xiàn)是內(nèi)存不足被killed;mysql5.6啟動內(nèi)存占用過高怎么辦呢,下面小編給大家解答下
    2016-09-09
  • SQL中Lag()和LEAD()的用法示例詳解

    SQL中Lag()和LEAD()的用法示例詳解

    LAG和LEAD函數(shù)為SQL開發(fā)者提供了強大的數(shù)據(jù)洞察力,尤其是在處理時間序列和趨勢分析問題時,下面這篇文章主要介紹了SQL中Lag()和LEAD()用法的相關(guān)資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2025-10-10

最新評論

盐亭县| 福海县| 文昌市| 邵武市| 福泉市| 都匀市| 晋宁县| 青冈县| 汉沽区| 衢州市| 灌阳县| 辰溪县| 屯昌县| 滕州市| 卢龙县| 武乡县| 延川县| 双鸭山市| 郎溪县| 彭泽县| 韶山市| 珲春市| 宣武区| 景宁| 普兰县| 安化县| 本溪| 犍为县| 万宁市| 东辽县| 兴城市| 三都| 北票市| 安多县| 手游| 丽水市| 湟中县| 巩义市| 韩城市| 北碚区| 潞城市|