我可以用什么替换 ->0, ->1 运算符来列出我正在使用 PostgreSQL 查询的 json 数组中的所有数组值?

问题描述 投票:0回答:1

我正在使用 PostgreSQL 查询这个名为

attributes
的 json 字段:

{
   "rule": {
       "requisite": [
           { 
              "link": {
                  object: "a",
                  description: "I'm the A object"
              }
           },
           {
              "link": {
                  object: "b",
                  description: "I'm the B object"
              }
           },
           {
              "link": {
                  object: "c",
                  description: "I'm the C object"
              }
           }
       ]
   }
}

如果我运行以下请求,使用不同的

->0
->1
->2
运算符,我可以一一访问其索引处的每个单个数组项:

WITH rules AS (
   SELECT attributes->'rule'->'requisite'->0->'link'->'object' AS object
      FROM mytable
)
SELECT * FROM rules

我可以有

a
,或
b
c

但这很笨拙。

我搜索过类似

->*

的内容 尝试了
jsonb_array_elements(attributes->'rule'->'requisite')

但还没有找到一种方法来方便地列出我的所有对象。我想收到结果:

object
------
a
b
c
json postgresql
1个回答
0
投票

是的,@Bergi,你是对的。
我最终成功了。

WITH requisites AS (
   SELECT attributes->'rule'->'requisite' AS requisite
      FROM mytable
)
select jsonb_array_elements(requisite)->'link'->'object' from requisites
© www.soinside.com 2019 - 2024. All rights reserved.