PostgreSQLでスペースで文字列をテーブルに分割する 質問する

PostgreSQLでスペースで文字列をテーブルに分割する 質問する

regexp_split_to_tableのような関数を探しているのですが、データベースのバージョンは8.2.9なので、それがありません。私は実際にはスペースで分割するだけなので、次のような文字列です。

どうやって茶色の牛

戻ってくるだろう

+------+
|Column|
+------+
|how   | 
|now   | 
|brown | 
|cow   |
+------+

これを処理できる簡単な関数はありますか、それとも自分で書かなければならないものはありますか?

ベストアンサー1

unnest 関数を使用して配列を結果セットに分割し、string_to_array 関数を使用して文字列リテラルを配列に変換できます。両方を組み合わせると、次のようになります。

alvherre=# select unnest(string_to_array('the quick lazy fox', ' '));
 unnest 
--------
 the
 quick
 lazy
 fox
(4 filas)

8.2 には UNNEST がないので、PostgreSQL では次のように記述できます。

create or replace function unnest(anyarray) returns setof anyelement
language sql as $$
   select $1[i] from generate_series(array_lower($1, 1),
                                     array_upper($1, 1)) as i;
$$; 

おすすめ記事