37人参与 • 2025-06-19 • Javascript
mysql中的json_contains
函数用于检查一个json文档(目标)是否包含另一个json文档(搜索值)。以下是其详细用法:
json_contains(target_json, search_json [, path])
返回值:
1
:目标包含搜索值。0
:目标不包含搜索值。null
:参数为null
或路径不存在。示例表:
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"');
注意:字符串需用双引号包裹,外层用单引号。
示例数据:
{"name": "alice", "age": 30, "skills": ["sql", "java"]}
查询包含"name": "alice"的对象:
select * from profiles where json_contains(data, '{"name": "alice"}');
示例数据:
{"department": {"team": ["alice", "bob"], "id": 101}}
**检查team
数组是否包含"bob"
**:
select json_contains( '{"department": {"team": ["alice", "bob"], "id": 101}}', '"bob"', '$.department.team' ); -- 返回1
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(类型不匹配)
示例数据:
{"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函数内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
您想发表意见!!点此发布评论
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论