暂无图片
暂无图片
6
暂无图片
暂无图片
暂无图片

PostgreSQL json_extract_path() 函数

原创 游湖 2023-01-03
2364

PostgreSQL json_extract_path() 函数

PostgreSQL json_extract_path() 函数从一个指定的 JSON 值中提取指定的路径的值。

json_extract_path() 语法

这是 PostgreSQL json_extract_path() 函数的语法:

json_extract_path(from_json JSON, VARIADIC path TEXT[]) -> JSON

参数

from_json
必需的。 要从中提取 JSON 值的 JSON 值。
path
必需的。 是一个可变的参数列表。它指定了要提取的路径。前面的路径应该包含有序的路径。

返回值

PostgreSQL json_extract_path() 函数返回一个 JSON 值,它是指定的 JSON 值中指定的路径上的 JSON 值。

当可变参数列表 path 中有个多个参数时,前面的路径应该包含后面的路径,这样才能够在 JSON 对象中提取到值。

如果路径不存在,json_extract_path() 函数返回 null。

json_extract_path() 示例

JSON 数组示例

本示例展示了如何使用 PostgreSQL json_extract_path() 函数从一个 JSON 数组的指定索引上提取值。

SELECT
    json_extract_path('[1, 2, [3, 4]]', '0') AS "#[0]",
    json_extract_path('[1, 2, [3, 4]]', '1') AS "#[1]",
    json_extract_path('[1, 2, [3, 4]]', '2') AS "#[2]";

 #[0] | #[1] |  #[2]
------+------+--------
 1    | 2    | [3, 4]

这里,我们分别提取了索引为 0,1,和 2 上值,json_extract_path() 函数也给出了正确的反馈。

如果我们想要提取 索引为 2 的内嵌数组中的值,该怎么做呢? 请使用下面的语句:

SELECT
    json_extract_path('[1, 2, [3, 4]]', '2', '0') AS "#[2][0]",
    json_extract_path('[1, 2, [3, 4]]', '2', '1') AS "#[2][1]";

 #[2][0] | #[2][1]
---------+---------
 3       | 4

这里,我们在可变参数 path 中先使用 '2',再使用 '0',这相当于如下的计算步骤:

  1. json_extract_path('[1, 2, [3, 4]]', '2') 返回了 [3, 4]
  2. json_extract_path('[3, 4]', '0') 返回了 3

JSON 对象示例

本示例展示了如何使用 PostgreSQL json_extract_path() 函数从一个 JSON 对象的指定路径上提取值。

SELECT
    json_extract_path('{"a": 1, "b": {"x": 2, "y": 3}}', 'a') AS "#.a",
    json_extract_path('{"a": 1, "b": {"x": 2, "y": 3}}', 'b') AS "#.b";

 #.a |       #.b
-----+------------------
 1   | {"x": 2, "y": 3}

当然,您也可以通过指定多个路径来提取子对象中内嵌的值,比如:

SELECT
    json_extract_path('{"a": 1, "b": {"x": 2, "y": 3}}', 'b', 'x') AS "#.b.x",
    json_extract_path('{"a": 1, "b": {"x": 2, "y": 3}}', 'b', 'y') AS "#.b.y";

 #.b.x | #.b.y
-------+-------
 2     | 3
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论