JSON_CONTAINS
描述
用于判断一个 JSON 文档是否包含指定的 JSON 元素。如果指定的元素存在于 JSON 文档中,则返回 1,否则返回 0。如果 JSON 文档或查询的元素无效,则返回 NULL
。
语法
JSON_CONTAINS(<json_object>, <candidate>[, <json_path>])
参数
必选参数
<json_object>
JSON 类型,检查其中是否存在<candidate>
。<candidate>
JSON 类型,要判断的候选值。
可选参数
<json_path>
String 类型,搜索起始路径,如果不提供默认从 root 开始。
返回值
- Null 如果三个参数任意一个为 NULL,返回 NULL
- True 如果
<json_object>
存在<candidate>
,返回 True。 - False 如果
<json_object>
不存在<candidate>
,返回 False。 - 如果
<json_object>
或<candidate>
不是 JSON 类型,报错。
示例
- 示例 1
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 |
+-------------------------------+SELECT JSON_CONTAINS(@j, '{"a": 1}');
+-------------------------------+
| JSON_CONTAINS(@j, '{"a": 1}') |
+-------------------------------+
| 1 |
+-------------------------------+ - NULL 参数
SELECT JSON_CONTAINS(NULL, '{"a": 1}');
+---------------------------------+
| JSON_CONTAINS(NULL, '{"a": 1}') |
+---------------------------------+
| NULL |
+---------------------------------+SELECT JSON_CONTAINS('{"a": 1}', NULL);
+---------------------------------+
| JSON_CONTAINS('{"a": 1}', NULL) |
+---------------------------------+
| NULL |
+---------------------------------+SELECT JSON_CONTAINS('{"a": 1}', '{"a": 1}', NULL);
+---------------------------------------------+
| JSON_CONTAINS('{"a": 1}', '{"a": 1}', NULL) |
+---------------------------------------------+
| NULL |
+---------------------------------------------+