複数のカラムの文字列を連結(CONCAT)する
データ移行の際に、MySqlで複数のカラムの文字列を連結して1つのカラムに集約したいことがあったので、その時のメモです。
コード
以下のコードは、移行元DBのカラム「name」「name2」「name3」を、移行先DBのカラム「name」にカンマ区切りで連結したものを格納する例です。
SELECT
CONCAT(
name,
IFNULL(
CASE WHEN name2 IS NOT NULL THEN CONCAT(',', name2) END, ''
),
IFNULL(
CASE WHEN name3 IS NOT NULL THEN CONCAT(',', name3) END, ''
)
)
FROM
tbl
「name2」と「name3」についてはNULLを許容していたので、NULLの場合は連結しないようにしています。