MySQL JSON_CONTAINS_PATH() 函数使用指南
MySQL JSON_CONTAINS_PATH()
函数检查一个 JSON 文档中在指定的路径上是否有值存在。
JSON_CONTAINS_PATH()
语法
这里是 MySQL JSON_CONTAINS_PATH()
的语法:
JSON_CONTAINS_PATH(json, one_or_all, path[, path])
参数
json
- 必需的。一个 JSON 文档。
one_or_all
- 必需的。可用值:
'one'
,'all'
。它指示是否检查所有的路径。 path
- 必需的。您应该至少指定一个路径表达式。
返回值
如果 JSON 文档在指定的路径上有值,JSON_CONTAINS_PATH()
函数将返回 1
,否则返回 0
。
JSON_CONTAINS_PATH()
根据 one_or_all
参数决定是否检查所有的路径:
- 如果是
'one'
,且至少有一个路径上有值,JSON_CONTAINS_PATH()
函数将返回1
,否则返回0
。 - 如果是
'all'
,且所有的路径上有值,JSON_CONTAINS_PATH()
函数将返回1
,否则返回0
。
如果任意一个参数为 NULL
, JSON_CONTAINS_PATH()
函数将返回 NULL
。
JSON_CONTAINS_PATH()
函数将在以下情况下返回错误:
- 如果参数
json
不是有效的 JSON 文档,MySQL 将会给出错误。您可以使用JSON_VALID()
验证 JSON 文档的有效性。 - 如果参数
path
不是有效的路径表达式, MySQL 将会给出错误。
JSON_CONTAINS_PATH()
示例
这里列出了几个常见的 JSON_CONTAINS()
用法示例。
示例: 数组
SELECT
JSON_CONTAINS_PATH('[1, 2, {"x": 3}]', 'all', '$[0]') as `$[0]`,
JSON_CONTAINS_PATH('[1, 2, {"x": 3}]', 'all', '$[3]') as `$[3]`,
JSON_CONTAINS_PATH('[1, 2, {"x": 3}]', 'all', '$[2].x') as `$[2].x`;
+------+------+--------+
| $[0] | $[3] | $[2].x |
+------+------+--------+
| 1 | 0 | 1 |
+------+------+--------+
示例: one
vs all
SELECT
JSON_CONTAINS_PATH('[1, 2, {"x": 3}]', 'one', '$[0]', '$[3]') as `one`,
JSON_CONTAINS_PATH('[1, 2, {"x": 3}]', 'all', '$[0]', '$[3]') as `all`;
+------+------+
| one | all |
+------+------+
| 1 | 0 |
+------+------+