JSON_CONTAINS_PATH
描述
该函数用于检验一个或多个指定的路径是否包含于目标 JSON 文档中。如果包含在目标 JSON 文档中,该函数返回 1,否则返回 0。
语法
JSON_CONTAINS_PATH(json_doc, one_or_all, path[, path] ...)
说明
参数 json_doc 用于指定 JSON 文档,path 为路径参数。如果任何参数为 NULL,则返回 NULL。
对于 one_or_all 参数,可选值如下:
-
'one':如果文档中至少存在一个路径,则返回 1,否则返回 0。 -
'all':如果文档中存在所有路径,则返回 1,否则返回 0。
以下情况都会发生报错:
-
json_doc参数不是有效的 JSON 文档。 -
任意
path参数不是有效的路径表达式。 -
one_or_all参数不为'one'或者'all'。
示例
SET @jn = '{"a": 1, "b": 2, "c": {"d": 4}}';
Query OK, 0 rows affected (0.000 sec)
SELECT JSON_CONTAINS_PATH(@jn, 'one', '$.a', '$.e');
+---------------------------------------------+
| JSON_CONTAINS_PATH(@j, 'one', '$.a', '$.e') |
+---------------------------------------------+
| 1 |
+---------------------------------------------+
1 row in set (0.001 sec)
SELECT JSON_CONTAINS_PATH(@jn, 'all', '$.a', '$.e');
+---------------------------------------------+
| JSON_CONTAINS_PATH(@j, 'all', '$.a', '$.e') |
+---------------------------------------------+
| 0 |
+---------------------------------------------+
1 row in set (0.001 sec)
SELECT JSON_CONTAINS_PATH(@jn, 'one', '$.c.d');
+----------------------------------------+
| JSON_CONTAINS_PATH(@j, 'one', '$.c.d') |
+----------------------------------------+
| 1 |
+----------------------------------------+
1 row in set (0.001 sec)
SELECT JSON_CONTAINS_PATH(@jn, 'one', '$.a.d');
+----------------------------------------+
| JSON_CONTAINS_PATH(@j, 'one', '$.a.d') |
+----------------------------------------+
| 0 |
+----------------------------------------+
1 row in set (0.001 sec)