跳到主要内容

JSON_CONTAINS

描述

用于判断一个 JSON 文档是否包含指定的 JSON 元素。如果指定的元素存在于 JSON 文档中,则返回 1,否则返回 0 。如果 JSON 文档或查询的元素无效,则返回 NULL

语法

JSON_CONTAINS(<json_str>, <candidate> [, <json_path>])

必选参数

参数描述
<json_str>需要检查的 JSON 字符串。
<candidate>用于检查是否包含的 JSON 元素。

可选参数

参数描述
<json_path>可选的 JSON 路径,指定检查的 JSON 子文档。如果不提供,默认为根文档。

返回值

  • 如果 json_elem 存在于 json_doc 中,则返回 1。
  • 如果 json_elem 不存在于 json_doc 中,则返回 0。
  • 如果任何参数无效或 JSON 文档格式不正确,则返回 NULL。

示例


SET @j = '{"a": 1, "b": 2, "c": {"d": 4}}';
SET @j2 = '1';
SELECT JSON_CONTAINS(@j, @j2, '$.a');


+-------------------------------+
| JSON_CONTAINS(@j, @j2, '$.a') |
+-------------------------------+
| 1 |
+-------------------------------+


SELECT JSON_CONTAINS(@j, @j2, '$.b');
+-------------------------------+
| JSON_CONTAINS(@j, @j2, '$.b') |
+-------------------------------+
| 0 |
+-------------------------------+


SET @j2 = '{"d": 4}';
SELECT JSON_CONTAINS(@j, @j2, '$.a');


+-------------------------------+
| JSON_CONTAINS(@j, @j2, '$.a') |
+-------------------------------+
| 0 |
+-------------------------------+

SELECT JSON_CONTAINS(@j, @j2, '$.c');


+-------------------------------+
| JSON_CONTAINS(@j, @j2, '$.c') |
+-------------------------------+
| 1 |
+-------------------------------+


SELECT json_contains('[1, 2, {"x": 3}]', '1');
+----------------------------------------+
| json_contains('[1, 2, {"x": 3}]', '1') |
+----------------------------------------+
| 1 |
+----------------------------------------+