【问题标题】:Select data from a nested jsonb array in Postgres从 Postgres 中的嵌套 jsonb 数组中选择数据
【发布时间】:2020-05-06 21:15:21
【问题描述】:

我想从这样嵌套的数组中选择最后一个值:

{ tier: [
  { tier: [] },
  { tier: [] },
  { tier: [
      { tier: 1},
      { tier: 2},
      { tier: 3}, // < this item       
    ] 
  },
  ] 
}  

我尝试在其他示例中使用类似的内容,但语法让我无法理解。 我得到一个“列不存在”或“无法从对象中提取元素”

SELECT *, 
  t0->tier->(jsonb_array_length(t0->tier) - 1) t1,
  t1->tier->(jsonb_array_length(t1->tier) - 1) t2,
  t2->tier->(jsonb_array_length(t2->tier) - 1) t3,
FROM data t0

【问题讨论】:

    标签: sql arrays json postgresql jsonb


    【解决方案1】:

    你可以通过负索引来引用它:

    SELECT t -> 'tier' -> -1 -> 'tier' -> -1
    FROM data;
    

    这里的-1引用了数组的最后一项,也就是说你不需要计算有多少元素。

    【讨论】:

    • 我怀疑 OP 想要:js -&gt; 'tier' -&gt; -1 -&gt; 'tier' -&gt; -1 -&gt;&gt; 'tier',它给出了最后一个元素的值而不是对象本身。无论如何 +1。
    • 啊,我不清楚。感谢您添加此说明。
    猜你喜欢
    • 1970-01-01
    • 2021-01-08
    • 1970-01-01
    • 2018-02-05
    • 1970-01-01
    • 2021-03-19
    • 2018-02-10
    • 2020-11-24
    • 2019-09-12
    相关资源
    最近更新 更多