MySQLで文字列結合をする方法(NULLに注意)

2017.10.14

基本形

MySQL で文字列結合するときに基本形としては、concat を使って、引数に結合したい文字列やカラムを順番に渡すかたちになります。

この例では 000-0000 のような連結された郵便番号を表示しようとしています。

select
	concat(zip1, '-', zip2) as zipcode
from
	address

結合するカラムに NULL が存在する場合

注意しないといけない点として、結合使用しているカラム内に NULL が含まれている場合、意図しない結果になってしまいます。

これを回避するためには、coalesce などを使用して、NULL のとき空文字に変換してから、結合するとうまくいきます。

select
	concat(coalesce(zip1, ''), '-', coalesce(zip2, '')) as zipcode
from
	address

まとめ

文字列の結合方法は、データベースによって、方法が微妙に違っていたりするので、注意しながら実装したいです。