开发者

MySQL中JSON_CONTAINS函数详细用法示例​及场景

目录
  • 前言
  • 函数语法​
  • ​使用场景和示例​
    • ​1. 检查数组是否包含元素​
    • ​2. 检查对象是否包含键值对​
    • ​3. 嵌套结构和路径参数​
    • ​4. 数据类型严格匹配​
    • ​5. 通配符路径​
  • ​注意事项​
    • ​总结​

      前言

      mysql中的jsON_CONTAINS函数用于检查一个JSON文档(目标)是否包含另一个JSON文档(搜索值)。以下是其详细用法:

      函数语法​

      JSON_CONTAINS(target_json, search_json [, path])
      • target_json​:要检查的目标JSON文档。
      • search_json​:要搜索的JSON值或结构。
      • path​(可选):指定在目标JSON中的具体路径。若未指定,默认检查整个文档。

      返回值​:

      • 1:目标包含搜索值。
      • 0:目标不包含搜索值。
      • NULL:参数为NULL或路径不存在。js

      ​使用场景和示例​

      ​1. 检查数组是否包含元素​

      • 示例表​:

        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. 检查对象是否包含键值对​

      • 示例数据​:

        {"name": "Alice", "age": 30, "skills": ["SQL", "Java"]}
      • 查询包含"name": "Alice"的对象​:

        SELECT * FROM profiles 
        WHERE JSON_CONTAINS(data, '{"name": "Alice"}');

      ​3. 嵌套结构和路径参数​

      • 示例数据​:

        {"department": {"team": ["Alice", "Bob"], "id": 101}}
      • ​**检查team数组是否包含"Bob"**​:

        SELECT JSON_CONTAINS(
          '{"department": {"team": ["Alice", "Bob"], "id": 101}}',
          '"Bob"',
          '$.department.team'
        ); -- 返回1

      ​4. 数据类型严格匹配​

      JSON区分数据类型,如数字3和字符串"3"不匹配:

      SELECT JSON_CONTAINS('[1, 2, 3]', '3');      -- 返回1(数值3)
      SELECT JSON_CONTAINS('[1, 2, "3"]', '"3"');  -- 返回1(字符串"3")
      SELECT JSON_CONTAINS('[1编程客栈, 2, 3]', '"3"');   -- 返回0(类型不匹配)

      ​5. 通配符路径​

      • 示例数据​:

        {"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
      • 数组子集​:搜索数组时,目标数组需包含搜索数组所有元素(顺序无关)。

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

      ​总结​

      JSON_CONTAINS适用于验证JSOjavascriptN结构中的存在性,需注意:

      • 正确使用路径和数据类型。
      • 对象需完全匹配键值对,数组需包含所有元素。
      • 结合路径通配符(*)可灵活处理嵌套数据。

      到此这篇关于MySQL中JSON_CONTAINS函数详细用法示例​及场景的文章就介绍到这了,更多相关MySQL JSONjs_CONTAINS函数内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!

      0

      上一篇:

      下一篇:

      精彩评论

      暂无评论...
      验证码 换一张
      取 消

      最新数据库

      数据库排行榜