亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

MySQL中JSON_CONTAINS函數(shù)詳細(xì)用法示例?及場(chǎng)景

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

前言

MySQL中的JSON_CONTAINS函數(shù)用于檢查一個(gè)JSON文檔(目標(biāo))是否包含另一個(gè)JSON文檔(搜索值)。以下是其詳細(xì)用法:

函數(shù)語(yǔ)法?

JSON_CONTAINS(target_json, search_json [, path])
  • ?target_json?:要檢查的目標(biāo)JSON文檔。
  • ?search_json?:要搜索的JSON值或結(jié)構(gòu)。
  • ?path?(可選):指定在目標(biāo)JSON中的具體路徑。若未指定,默認(rèn)檢查整個(gè)文檔。

?返回值?:

  • 1:目標(biāo)包含搜索值。
  • 0:目標(biāo)不包含搜索值。
  • NULL:參數(shù)為NULL或路徑不存在。

?使用場(chǎng)景和示例?

?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"標(biāo)簽的用戶?:

    SELECT * FROM users 
    WHERE JSON_CONTAINS(tags, '"developer"', '$');

    或簡(jiǎn)寫(xiě):

    SELECT * FROM users 
    WHERE JSON_CONTAINS(tags, '"developer"');

    ?注意?:字符串需用雙引號(hào)包裹,外層用單引號(hào)。

?2. 檢查對(duì)象是否包含鍵值對(duì)?

  • ?示例數(shù)據(jù)?:

    {"name": "Alice", "age": 30, "skills": ["SQL", "Java"]}
  • ?查詢包含"name": "Alice"的對(duì)象?:

    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ù)類(lèi)型嚴(yán)格匹配?

JSON區(qū)分?jǐn)?shù)據(jù)類(lèi)型,如數(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(類(lèi)型不匹配)

?5. 通配符路徑?

  • ?示例數(shù)據(jù)?:

    {"employees": [{"name": "Alice"}, {"name": "Bob"}]}
  • ?**檢查任意name是否為"Bob"**?:

    SELECT JSON_CONTAINS(
      '{"employees": [{"name": "Alice"}, {"name": "Bob"}]}',
      '"Bob"',
      '$.employees[*].name'
    ); -- 返回1

?注意事項(xiàng)?

  • ?路徑存在性?:若路徑不存在,返回NULL。

    SELECT JSON_CONTAINS('{"a": 1}', '1', '$.b'); -- 返回NULL
  • ?對(duì)象匹配?:搜索對(duì)象時(shí),必須完全包含所有鍵值對(duì)。

    SELECT JSON_CONTAINS('{"a":1, "b":2}', '{"a":1}'); -- 返回1
    SELECT JSON_CONTAINS('{"a":1}', '{"a":1, "b":2}'); -- 返回0
  • ?數(shù)組子集?:搜索數(shù)組時(shí),目標(biāo)數(shù)組需包含搜索數(shù)組所有元素(順序無(wú)關(guān))。

    SELECT JSON_CONTAINS('[1,2,3]', '[3,1]'); -- 返回1
    SELECT JSON_CONTAINS('[1,2,3]', '[1,4]'); -- 返回0

?總結(jié)?

JSON_CONTAINS適用于驗(yàn)證JSON結(jié)構(gòu)中的存在性,需注意:

  • 正確使用路徑和數(shù)據(jù)類(lèi)型。
  • 對(duì)象需完全匹配鍵值對(duì),數(shù)組需包含所有元素。
  • 結(jié)合路徑通配符(*)可靈活處理嵌套數(shù)據(jù)。

到此這篇關(guān)于MySQL中JSON_CONTAINS函數(shù)詳細(xì)用法示例?及場(chǎng)景的文章就介紹到這了,更多相關(guān)MySQL JSON_CONTAINS函數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論