跳到主要内容

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)