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

まとめ

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