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