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

PostgreSQL多次元配列

    Postgres配列の要素 常に基本要素です 、つまりスカラー 値。サブ配列はPostgresの「要素」ではありません。配列スライスは元の寸法を保持します。

    基本要素を抽出することができます 、これはスカラー要素のデータ型の値です。
    または、配列スライスを抽出できます。 、元の配列データ型と元の配列次元も保持します。

    サブ配列を「要素」として取得するというあなたの考えは、それと矛盾し、実装されていないだけです。

    マニュアルの説明がわかりやすい場合があります。 しかし、少なくとも私たちは見つけることができます:

    最初の例 見つからない基本要素を参照しようとします(2次元配列に2つの配列インデックスが必要です)。したがって、PostgresはNULLを返します。
    3番目の例 結果のNULLを新しい配列でラップするだけです。

    平らにする 配列スライス(1次元配列にする) unnest() 結果のセットを新しい ARRAY コンストラクター 。相関サブクエリまたはLATERALのいずれか 参加します(9.3ページ以上が必要です)。両方のデモンストレーション:

    SELECT s.col[2:2][2:3] AS slice_arr
         , x.lateral_arr
         , ARRAY(SELECT unnest(s.col[2:2][2:3])) AS corr_arr
    FROM  (SELECT ARRAY[[1,2,3],[4,5,6]] AS col) s
         , LATERAL (SELECT ARRAY(SELECT * FROM unnest(s.col[2:2][2:3])) AS lateral_arr) x;
    

    また、最新バージョンのマニュアル を必ずお読みください。 。あなたの参照はPostgres9.1を指していますが、実際にPostgres9.4を使用している可能性があります。

    関連:




    1. 書痙なしで、1つまたは2つのフィールドを除いて、すべてを選択できますか?

    2. パスコードが一意になるまでループする

    3. Webアプリのメトリックを保存する方法は?

    4. nullをチェックすると、このクエリが遅くなるのはなぜですか?