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 |
+----------------------------------------+