文字列を連結するとnull になる

/ db

PostgreSQL で文字列を連結させるには、|| 演算子を使うのだけど、これが一癖あって、連結するカラムの値が null だと、連結結果も null になってしまう。今日はじめて知った。

 sei | mei
-----+-----
 姓  | 名
 姓  | null

# select sei || mei as name from table; name ------ 姓名 null

null にしないためには、COALESCE で空文字を連結するように書いてあげれば大丈夫。

# select sei || COALESCE(mei, '') as name from table;
 name 
------
 姓名 
 姓 

こういう動きを見ると、|| 演算子が単純に文字を連結するだけの演算子のように思えないんだけど、SQL92の仕様なのか、それともPostgreSQLの方言なのかなあ。

このエントリーのトラックバックURL
http://www.deftrash.com/admin/mt4/mt-tb.cgi/426