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

CONCAT_WS() 함수에서 NULL 값을 넣으면 결과는 어떻게 될까?

CONCAT_WS() 함수와 NULL 값의 관계

MySQL의 CONCAT_WS() 함수는 문자열을 지정한 구분자로 연결해 주는 유용한 함수입니다. 그렇다면 연결하려는 문자열 중에 NULL 값이 포함되어 있으면 어떤 결과가 나올까요?

핵심 규칙은 다음과 같습니다. CONCAT_WS() 함수가 NULL을 반환하는 경우는 오직 첫 번째 인수, 즉 구분자(separator) 자체가 NULL일 때뿐입니다.

1. 구분자가 NULL인 경우

구분자로 NULL을 지정하면 함수는 전체 결과로 NULL을 반환합니다.

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

2. 구분자 이외의 위치에 NULL이 있는 경우

반면, NULL이 구분자가 아닌 다른 위치에 있다면 MySQL은 해당 NULL 값을 단순히 무시하고 나머지 문자열들을 정상적으로 연결합니다. 아래 예시를 통해 확인할 수 있습니다.

NULL이 마지막에 위치한 경우:

mysql> Select CONCAT_ws('s','Tutorial','Point','.com',NULL);
+-----------------------------------------------+
| CONCAT_ws('s','Tutorial','Point','.com',NULL) |
+-----------------------------------------------+
| TutorialsPoints.com                           |
+-----------------------------------------------+
1 row in set (0.00 sec)

NULL이 문자열 중간에 위치한 경우:

mysql> Select CONCAT_ws('s','Tutorial',NULL,'Point','.com');
+-----------------------------------------------+
| CONCAT_ws('s','Tutorial',NULL,'Point','.com') |
+-----------------------------------------------+
| TutorialsPoints.com                           |
+-----------------------------------------------+
1 row in set (0.00 sec)

정리

CONCAT_WS() 함수에서 NULL 처리 동작을 요약하면 다음과 같습니다.

  • 구분자(첫 번째 인수)가 NULL → 전체 결과가 NULL로 반환됨
  • 연결 대상 문자열에 NULL 포함 → 해당 NULL은 무시되고 나머지 문자열만 연결됨

이러한 특성 때문에 CONCAT_WS()는 데이터에 NULL이 섞여 있어도 안전하게 문자열을 합칠 수 있어, 실무에서 여러 컬럼 값을 하나로 묶을 때 자주 활용됩니다.