PostgreSQL jsonb_path_query_array() 函数
PostgreSQL jsonb_path_query_array()
函数在一个给定的 JSON 中根据指定的路径获取值,并将所有匹配的值作为一个数组返回。
jsonb_path_query_array()
语法
这是 PostgreSQL jsonb_path_query_array()
函数的语法:
jsonb_path_query_array( target JSONB , path JSONPATH [, vars JSONB [, silent BOOLEAN]] ) -> JSONB
复制
参数
target
- 必需的。 要检查的 JSONB 值。
path
- 必需的。 要检查的 JSON 路径,它是
JSONPATH
类型的。 vars
- 可选的。 路径中要用到的变量值。
silent
- 可选的。 如果提供了此参数,并且为
true
,该函数会像@?
和@@
操作符一样抑制相同的错误。
返回值
PostgreSQL jsonb_path_query_array()
函数返回一个 JSON 数组,它包含了在指定的 JSON 值中所有与指定的路径匹配的值。
如果任意一个参数是 NULL,jsonb_path_query_array()
函数将返回 NULL。
jsonb_path_query_array()
示例
JSON 数组
下面的示例展示了如何使用 PostgreSQL jsonb_path_query_array()
函数从一个 JSON 数组中根据指定的路径获取值。
SELECT jsonb_path_query_array('[1, 2, 3]', '$[*] ? (@ > 1)');
复制
jsonb_path_query_array ------------------------ [2, 3]
复制
我们可以在 JSON 路径中使用变量,如下:
SELECT jsonb_path_query_array( '[1, 2, 3, 4]', '$[*] ? (@ >= $min && @ <= $max)', '{"min": 2, "max": 3}' );
复制
jsonb_path_query_array ------------------------ [2, 3]
复制
这里,我们在 JSON 路径 $[*] ? (@ >= $min && @ <= $max)
中使用了两个变量 min
和 max
,并且我们在参数 var
中为变量提供了值 {"min": 2, "max": 3}
,这样,JSON 路径变成了 $[*] ? (@ >= 2 && @ <= 3)
。也就是说,该函数用来返回数组 [1, 2, 3, 4]
中的大于等 2 并且小于等于 3 的所有的值。
JSON 对象
下面的示例展示了如何使用 PostgreSQL jsonb_path_query_array()
函数从一个 JSON 对象中根据指定的路径获取值。
SELECT jsonb_path_query_array( '{"x": 1, "y": 2, "z": 3}', '$.* ? (@ >= 2)' );
复制
jsonb_path_query_array ------------------------ [2, 3]
复制
这里, JSON 路径 $.* ? (@ >= 2)
表示在 JSON 对象 {"x": 1, "y": 2, "z": 3}
中的顶层成员的值中所有大于 2 的值。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
PostgreSQL jsonb_path_query_array() 函数在一个给定的 JSON 中根据指定的路径获取值,并将所有匹配的值作为一个数组返回。
2年前

评论