jsonb_array_elements获取元素位置

时间:2018-02-23 08:50:26

标签: sql json postgresql

我有一个包含多行JSONB列的表格。 每行包含一个JSON数组。

现在我需要把它放到行中,但我也需要元素的位置。

e.g。

select *
from (
   select jsonb_array_elements("values"::jsonb) from "myData"
) as x;

给我所有行的所有数组中的所有元素。

我如何获得数组索引?

data                        
----------------------------
{ text: "Hello" } | 0 <-- first array element from first row
{ text: "World" } | 1 <-- second array element from first row
{ text: "Hallo" } | 0 <-- first array element from second row
{ text: "Welt!" } | 1 <-- second array element from second row

1 个答案:

答案 0 :(得分:3)

使用横向联接和with ordinality

select *
from (
    select t.* 
    from "myData", jsonb_array_elements("values") with ordinality as t(data, idx)
) as x;

如果"values"已经是jsonb列,则无需将其投放到jsbon