2017.3.12
2020.1.7

複数のカラムの文字列を連結(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の場合は連結しないようにしています。

MySQL】関連記事