PostgreSQL jsonb_path_match() 函数使用指南
PostgreSQL jsonb_path_match() 函数返回一个 JSON 路径断言对一个指定的 JSON 值的执行结果。
jsonb_path_match() 语法
这是 PostgreSQL jsonb_path_match() 函数的语法:
jsonb_path_match(
target JSONB
, path JSONPATH
[, vars JSONB
[, silent BOOLEAN]]
) -> BOOLEAN
参数
target- 必需的。 要检查的 JSONB 值。
path- 必需的。 要执行的 JSON 路径断言。
vars- 可选的。 路径中要用到的变量值。
silent- 可选的。 如果提供了此参数,并且为
true,该函数会像@?和@@操作符一样抑制相同的错误。
返回值
PostgreSQL jsonb_path_match() 函数返回一个布尔值,它是一个 JSON 路径断言对一个指定的 JSON 值的执行结果。 t 表示指定的 JSON 值与指定的 JSON 路径匹配, f 表示指定的 JSON 值与指定的 JSON 路径不匹配。
如果任意一个参数是 NULL,jsonb_path_match() 函数将返回 NULL。
jsonb_path_match() 示例
下面的示例展示了如何使用 PostgreSQL jsonb_path_match() 函数检查在一个 JSON 数组中是否包含大于 1 的值。
SELECT jsonb_path_match('[1, 2, 3]', 'exists($[*] ? (@ > 1))');
jsonb_path_match
------------------
t这里,我们使用路径 $[*] ? (@ > 2) 来获取 JSON 数组 [1, 2, 3] 中的大于 2 的项。 而 exists($[*] ? (@ > 1)) 检查 JSON 数组中是否包含大于 2 的项。 该语句与下面的 jsonb_path_exists() 相同:
SELECT jsonb_path_exists('[1, 2, 3]', '$[*] ? (@ > 1)');
jsonb_path_exists
-------------------
t