LoginSignup
50
38

More than 3 years have passed since last update.

postgresqlでシンプルな文字列結合

Last updated at Posted at 2017-04-19

はじめに

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

おわりに

文字列結合演算子 || の存在を知らなかったので、メモ代わりに投稿しました。
ドカベンはよく知りません。

50
38
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
50
38