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

Postgresqlで配列を行に分割する方法

    Postgresのバージョンをアップグレードすることをお勧めします。サポートされているすべてのバージョンはunnest()をサポートしています :

    SELECT x.*
    FROM (SELECT id, UNNEST(selected_placements) as selected_placement
          FROM  app_data.content_cards
         ) x
    WHERE selected_placement IS NOT NULL;
    

    以前のバージョンでは、一度に1つずつ選択するように努めることができます。 9.5ではありますが、以下がテストされ、機能します。

    with content_cards as (
         select 1 as id, array['a', 'b', 'c'] as selected_placements
        )
    SELECT id, selected_placements[num] as selected_placement
    FROM (SELECT cc.*, generate_series(1, ccup.maxup) as num
          FROM content_cards cc CROSS JOIN
               (SELECT MAX(ARRAY_UPPER(cc.selected_placements, 1)) as maxup
                FROM content_cards cc
               ) ccup
         ) x
    WHERE selected_placements[num]  IS NOT NULL;
    



    1. オラクルでの日付のキャスト

    2. Python 2.7 の MSSQL

    3. MySQLの日付/時刻値をSystem.DateTimeに変換できません

    4. 特定の値より大きいテーブル内の最小値を見つける