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