当前位置: 代码网 > it编程>编程语言>Javascript > MySQL中JSON_CONTAINS函数详细用法示例​及场景

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

2025年06月19日 Javascript 我要评论
前言mysql中的json_contains函数用于检查一个json文档(目标)是否包含另一个json文档(搜索值)。以下是其详细用法:函数语法​json_contains(target_json,

前言

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

函数语法​

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

返回值​:

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

​使用场景和示例​

​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适用于验证json结构中的存在性,需注意:

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

到此这篇关于mysql中json_contains函数详细用法示例​及场景的文章就介绍到这了,更多相关mysql json_contains函数内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com