[ソフト] PostgreSQLの配列
今回、お仕事で PostgreSQL の配列を使ってみました。配列は RDBの標準機能ではありませんし、乱用はよくないと思いますが、場合によっては便利です。
http://www.postgresql.jp/document/pg815doc/html/arrays.html
配列カラムの作成
CREATE TABLE sample01 ( id integer, name varchar(64), list integer[] );
- 配列の大きさを指定する必要はありません
- 多次元の配列も作れます。
参照(select)
以下のような参照ができます。
- 配列全体
SELECT list FROM sample01 WHERE id = 1;
- 1要素、添え字は 1から始まります。データの無い要素を参照すると NULL が戻ります
SELECT list[2] FROM sample01 WHERE id = 1;
- 範囲指定、下の例では配列の2番目〜10番目
SELECT list[2:10] FROM sample01 WHERE id = 1;
配列全体や、範囲指定で選択した場合は 以下のように {} でくくられ , 区切りの文字列として選択されます。
SELECT list[2:4] FROM sample01 WHERE id = 1; list ----------- {2,3,4}
挿入/更新 (insert/update)
挿入、更新時にも 配列全体、要素、範囲指定が使えます。
INSERT INTO sample01(id,name,list) VALUES(11,'Yoshida','{2,4,6}'); UPDATE sample01 SET list[2] = 15 WHERE id = 2; UPDATE sample01 SET list[1:3] = '{7,5,3}' WHERE id = 2;
その他
配列操作用の便利な関数(?)などがあります。
- ARRAY[] 配列データの作成
- array_dims 配列の大きさを戻す
- array_prepend,array_append,array_cat 配列へのデータの追加
- any,all 配列内の検索