はじめに
PostgreSQLですぐに使える文字列結合を3つ紹介します
- 文字列結合演算子
str1 || str2
- concat()
concat(str1, str2 [, ...])
- concat_ws()
concat_ws(septext, str, str [, ...] ])
こちらを参考にしました
PostgreSQL 9.3.2文書 文字列関数と演算子
文字連結演算子
str1 || str2
パイプラインで繋ぐだけ、とてもシンプル
整数や真偽値など、非文字列型でも対応してくれる
ただし連結要素にNULLが含まれる場合、結果はNULLとなる。
SELECT
sei, mei, age, post,
sei || mei || '(' || age || ')' || post AS outline
FROM
members
sei | mei | age | post | outline |
---|---|---|---|---|
山田 | 太郎 | 15 | 捕手 | 山田太郎(15)捕手 |
里中 | 智 | 15 | 投手 | 里中智(15)投手 |
山田 | サチ子 | 6 | (NULL) | (NULL) |
※ 山田サチ子の行にNULLが含まれるため、outlineはNULLとなる |
concat
concat(str1, str2 [, ...])
引数(文字列)を結合する、非文字列型でも対応してくれる
結合演算子と違い、NULLの値は無視する
SELECT
sei, mei, age, post,
concat(sei, mei, '(', age, ')', post) AS outline
FROM
members
sei | mei | age | post | outline |
---|---|---|---|---|
山田 | 太郎 | 15 | 捕手 | 山田太郎(15)捕手 |
里中 | 智 | 15 | 投手 | 里中智(15)投手 |
山田 | サチ子 | 6 | (NULL) | 山田サチ子(6) |
※ 山田サチ子の行のNULLは無視されている |
concat_ws
concat_ws(septext, str, str [, ...] ])
第一引数を区切り文字として、残りのすべての引数を結合する。
NULLの値は無視する。
スペース区切りした文字列を作りたい時や、
CSVを作りたいときに使えそう ⇒ でもNULLでズレるから向かなそう
SELECT
concat_ws(',', members.*) AS csvline
FROM
members
csvline |
---|
山田,太郎,15,捕手 |
里中,智,15,投手 |
山田,サチ子,6 |
おわりに
文字列結合演算子 ||
の存在を知らなかったので、メモ代わりに投稿しました。
ドカベンはよく知りません。