sql >> データベース >  >> RDS >> PostgreSQL

postgresql9.4jsonbを関数/サーバー側言語なしでオブジェクトに変換する方法

    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 同様に。それぞれの機能バリアントを使用するだけです。

    関連:



    1. MySQLで2回以上出現する個別のレコードを表示するためのCOUNTの使用

    2. Postgresql-enable_nestloop =falseを使用すると、クエリの実行速度が大幅に向上します。プランナーが正しいことをしていないのはなぜですか?

    3. AmazonAurorasMulti-AZデプロイメントを理解する

    4. テーブル内の階層データのすべての子ノードをカウントします