jsonb_populate_record()
(またはjson_populate_record()
json
の場合 )ターゲットとしてよく知られている行タイプを使用します。一時テーブルを使用して、アドホックに使用するタイプを登録できます(既存を使用できない場合) テーブルまたはカスタム複合タイプ):
CREATE TEMP TABLE obj(a int, b int, c int, d int);
次に:
SELECT t.id, d.*
FROM test t
, jsonb_populate_record(null::obj, t.data) d;
または jsonb_to_record()
(またはjson_to_record()
json
の場合 )そして、呼び出しで列定義リストを提供します:
SELECT t.id, d.*
FROM test t
, jsonb_to_record(t.data) d(a int, b int, c int, d int);
または 各フィールドを抽出してキャストします 個別に:
SELECT id, (data->>'a')::int AS a, (data->>'b')::int AS b
, (data->>'c')::int AS c, (data->>'d')::int AS d
FROM test;
3つすべてがjson
で機能します およびjsonb
同様に。それぞれの機能バリアントを使用するだけです。
関連: