Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL CONCAT() 함수에서 NULL 값이 포함되면 출력 결과는 어떻게 될까?


MySQL의 CONCAT() 함수는 문자열을 연결하는 과정에서 인수 중 하나라도 NULL 값이 포함되면 최종 결과로 NULL을 반환합니다. 이는 CONCAT() 함수가 NULL을 유효한 문자열로 취급하지 않기 때문이며, 아래 예시를 통해 직접 확인해 볼 수 있습니다.

예시

mysql> Select CONCAT('Tutorials',NULL,'Point');
+----------------------------------+
| CONCAT('Tutorials',NULL,'Point') |
+----------------------------------+
| NULL                             |
+----------------------------------+
1 row in set (0.06 sec)

mysql> Select CONCAT('TutorialsPoint','.com',NULL);
+--------------------------------------+
| CONCAT('TutorialsPoint','.com',NULL) |
+--------------------------------------+
| NULL                                 |
+--------------------------------------+
1 row in set (0.00 sec)

위 첫 번째 예시에서는 'Tutorials'와 'Point' 사이에 NULL이 위치하고, 두 번째 예시에서는 '.com' 뒤에 NULL이 위치합니다. 두 경우 모두 인수 목록에 NULL이 하나라도 존재하기 때문에 CONCAT() 함수는 나머지 문자열이 정상적이더라도 전체 연산 결과로 NULL을 반환하게 됩니다.

참고: NULL로 인한 오류 방지 방법

NULL 값 때문에 전체 결과가 NULL이 되는 상황을 피하려면 다음과 같은 방법을 활용할 수 있습니다.

  • IFNULL() 또는 COALESCE(): NULL일 가능성이 있는 컬럼을 IFNULL(column, '') 형태로 감싸서 NULL을 빈 문자열로 대체합니다.
  • CONCAT_WS(): 구분자를 사용해 문자열을 연결하는 이 함수는 NULL 인수를 자동으로 건너뛰므로, NULL이 포함되어도 나머지 문자열은 정상적으로 연결됩니다.