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

Postgres配列へのデータの選択

    array_agg()は使用できません 少なくともPostgreSQL9.4までではない多次元配列を生成するため。
    (ただし、今後の Postgres 9.5 array_agg()の新しいバリアントを出荷します できます!)

    @Matt Ballのクエリから得られるのは、レコードの配列(the_table[])です。 。

    配列は、同じ基本タイプの要素のみを保持できます。あなたは明らかに数字と文字列のタイプを持っています。すべての列(まだ変換されていない)をtextに変換します それを機能させるために。

    前にここで示したように、このための集計関数を作成できます。

    CREATE AGGREGATE array_agg_mult (anyarray)  (
        SFUNC     = array_cat
       ,STYPE     = anyarray
       ,INITCOND  = '{}'
    );
    

    電話:

    SELECT array_agg_mult(ARRAY[ARRAY[name, id::text, url]]) AS tbl_mult_arr
    FROM   tbl;
    

    追加のARRAY[]に注意してください 多次元配列(正確には2次元)にするためのレイヤー。

    インスタントデモ:

    WITH tbl(id, txt) AS (
        VALUES
          (1::int, 'foo'::text)
         ,(2,      'bar')
         ,(3,      '}b",') -- txt has meta-characters
        )
        , x AS (
        SELECT array_agg_mult(ARRAY[ARRAY[id::text,txt]]) AS t
        FROM   tbl
        )
    SELECT *, t[1][3] AS arr_element_1_1, t[3][4] AS arr_element_3_2
    FROM   x;
    


    1. PostgreSQL手続き型言語Cが見つかりません

    2. EntityFrameworkでのMySQLの使用

    3. プライマリの代わりに2つの外部キー

    4. SQL Azureデータベースをローカル開発サーバーにコピーするにはどうすればよいですか?