CONCAT()에 NULL이 있으면 결과가 NULL이 됩니다. IFNULL(컬럼, '')로 빈 문자열로 치환하면 안전하게 결합됩니다.
테이블 생성 및 데이터 삽입
mysql> CREATE TABLE DemoTable1793 (
-> StudentFirstName VARCHAR(20),
-> StudentLastName VARCHAR(20)
-> );
Query OK, 0 rows affected (0.00 sec)
mysql> INSERT INTO DemoTable1793 VALUES('John','Smith');
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO DemoTable1793 VALUES('Carol',NULL);
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO DemoTable1793 VALUES(NULL,'Brown');
Query OK, 1 row affected (0.00 sec)
데이터 조회
mysql> SELECT * FROM DemoTable1793;
+------------------+-----------------+ | StudentFirstName | StudentLastName | +------------------+-----------------+ | John | Smith | | Carol | NULL | | NULL | Brown | +------------------+-----------------+ 3 rows in set (0.00 sec)
NULL 안전 결합
mysql> SELECT CONCAT(IFNULL(StudentFirstName,''), IFNULL(StudentLastName,'')) FROM DemoTable1793;
+----------------------------------------------------------------+ | CONCAT(IFNULL(StudentFirstName,''), IFNULL(StudentLastName,'')) | +----------------------------------------------------------------+ | JohnSmith | | Carol | | Brown | +----------------------------------------------------------------+ 3 rows in set (0.00 sec)
대안: CONCAT_WS('', StudentFirstName, StudentLastName)도 NULL을 자동 건너뛰지만, 구분자가 빈 문자열이면 구분이 안 될 수 있습니다. CONCAT_WS(' ', ...)로 공백 구분 권장. COALESCE(컬럼1, 컬럼2, '')도 사용 가능.