いくつかの方法があります。 1つの方法は、配列をテキストにキャストし、regexp_split_to_tableで分割することです。 ()
。
この関数はPostgreSQL8.3以降に存在します 。
SELECT regexp_split_to_table(trim(my_2d_intarr::text, '{}'), '},{');
出力:
0,0,0
1,1,1
2,2,2
囲みブラケットが必要な場合(おそらく必要ない場合は?)、次のように追加し直します。
SELECT '{' || regexp_split_to_table(trim(my_2d_intarr::text, '{}'), '},{') || '}';
Ourtput:
{0,0,0}
{1,1,1}
{2,2,2}
代替:
これはPostgreSQL8.2でも機能するはずです またはそれ以前のことかもしれませんが、私はそれをテストしませんでした。
SELECT my_2d_int_arr_var[x:x][1:3]
FROM (SELECT generate_series(1, array_upper(my_2d_intarr, 1), 1)::int4 AS x)) x
出力:
{{0,0,0}}
{{1,1,1}}
{{2,2,2}}
(中かっこを削除することをお勧めします..)
それ以外の場合は、配列をループするplpgsql関数を記述します。かなり簡単です。
関連するunnest()
もあります。
関数ですが、基本要素(この場合は整数)ごとに行を返すため、ここでは使用しません。
結果を出力する1つの(高速!)方法: COPY
。