でJSONオブジェクトから値Iはこれに類似したコンテンツを有するPostgresのテーブルを有する:抽出キー、Postgresの
id | data
1 | {"a":"4", "b":"5"}
2 | {"a":"6", "b":"7"}
3 | {"a":"8", "b":"9"}
最初の列は整数であり、第二は、JSONカラムです。
私は結果は次のようになりますので、JSONのキーと値を拡張できるようにしたい:
id | key | value
1 | a | 4
1 | b | 5
2 | a | 6
2 | b | 7
3 | a | 8
3 | b | 9
これはPostgresのSQLで達成することができますか?元のテーブルのようなシミュレートすることができることを私は考える
を試してみた何
:
select *
from
(
values
(1, '{"a":"4", "b":"5"}'::json),
(2, '{"a":"6", "b":"7"}'::json),
(3, '{"a":"8", "b":"9"}'::json)
) as q (id, data)
私が使用してちょうどキーを入手することができます
select id, json_object_keys(data::json)
from
(
values
(1, '{"a":"4", "b":"5"}'::json),
(2, '{"a":"6", "b":"7"}'::json),
(3, '{"a":"8", "b":"9"}'::json)
) as q (id, data)
そして私はそれらを次のようなレコードセットとして得ることができます:
select id, json_each(data::json)
from
(
values
(1, '{"a":"4", "b":"5"}'::json),
(2, '{"a":"6", "b":"7"}'::json),
(3, '{"a":"8", "b":"9"}'::json)
) as q (id, data)
しかし、私はid、key、valueを使ってどのように結果を達成するかを考え出すことができません。
アイデア?
注:私が実際に使っているjsonは、これよりかなりネストされていますが、この例は私の根底にある問題をよく表していると思います。
[postgresql 9.4 jsonbを関数/サーバー側の言語を持たないオブジェクトに変換する方法](http://stackoverflow.com/questions/27181980/how-to-convert-postgresql-9-4-jsonb-to -jject-function-server-side-langu) – e4c5
カラムとしてではなく、テーブルとして 'json_object_keys'または' json_each'関数を使用してください: 'select id、j.key、j.value from my_table、json_each(data)j' – Abelisto
ありがとうAbelisto。確かに、あなたが提案するクエリを使って、私が探しているテーブルではなく、完全なデカルト製品で終わるだろうか? –