3

postgresql 9.4 jsonb に頭を悩ませようとしていますが、次のことを行う方法を理解するのに助けが必要です。

次の例の jsonb が与えられます。

‘{“name1” : value1, “name2” : value2, “name3” : [int1, int2, int3] }’::jsonb AS table1.column1

求む: "name3" 配列のみを、次のリターン シグネチャを持つテーブルとして返します。

TABLE( var_name varchar, var_value int, var_row_num int)

したがって、結果のデータは次のようになります。

(‘name3’, int1, 1)
(‘name3’, int2, 2)
(‘name3’, int3, 3)

配列はゼロを除く任意の長さであり、'name3' が存在することが保証されていると仮定します。

4

2 に答える 2

1

これで問題は解決したようですが (ありがとう、Bruno)、必要以上のコードがあるように見えますか?

WITH x AS (SELECT 'name3' as aname, jsonb_array_elements(column1->'name3') AS some_value FROM table1)
SELECT x.*, row_number() OVER () FROM x;

誰もがより良い解決策を持っていますか?

于 2014-11-02T15:11:42.910 に答える
1

json_array_elementsを使用してjson array、結果のネストを解除できますcolumn1->'name3'

SELECT 'name3' ,json_array_elements(column1->'name3')
FROM table1;

結果

(‘name3’, int1)
(‘name3’, int2)
(‘name3’, int3)
于 2014-11-01T19:12:32.123 に答える