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

MySQL CONCAT_WS() 함수에서 NULL을 사용하면 어떤 결과가 반환될까?

MySQL의 CONCAT_WS() 함수는 여러 문자열을 지정한 구분 기호로 연결해주는 유용한 함수입니다. 하지만 인수나 구분 기호 자리에 NULL이 포함되면 어떤 결과가 나오는지 상황별로 정확히 이해하는 것이 중요합니다. 아래에서 세 가지 경우를 예제와 함께 살펴보겠습니다.

1. 두 인수가 모두 NULL인 경우

CONCAT_WS() 함수의 인수로 NULL만 전달하면, MySQL은 빈 문자열(공백)을 반환합니다. 에러가 발생하지 않고 단순히 빈 결과가 출력된다는 점이 특징입니다.

예제

mysql> Select CONCAT_WS('',NULL,NULL);
+-------------------------+
| CONCAT_WS('',NULL,NULL) |
+-------------------------+
|                         |
+-------------------------+
1 row in set (0.00 sec)

2. 인수 중 하나만 NULL인 경우

인수 중 하나가 NULL이고 다른 하나는 실제 값이라면, MySQL은 NULL이 아닌 값만 출력합니다. 즉, CONCAT_WS() 함수는 NULL 값을 무시하고 나머지 유효한 문자열을 그대로 반환합니다.

예제

mysql> Select CONCAT_WS('',NULL,'Delhi');
+----------------------------+
| CONCAT_WS('',NULL,'Delhi') |
+----------------------------+
| Delhi                      |
+----------------------------+
1 row in set (0.00 sec)

mysql> Select CONCAT_WS('','Ram',NULL);
+--------------------------+
| CONCAT_WS('','Ram',NULL) |
+--------------------------+
| Ram                      |
+--------------------------+
1 row in set (0.00 sec)

위 예제에서 볼 수 있듯이, NULL이 첫 번째 인수든 두 번째 인수든 관계없이 유효한 값('Delhi' 또는 'Ram')만 정상적으로 출력됩니다.

3. 구분 기호 자리에 NULL이 있는 경우

반면, 구분 기호(separator) 자리에 NULL을 사용하면 결과는 완전히 달라집니다. 이 경우 MySQL은 NULL을 반환합니다. 구분 기호는 함수의 핵심 요소이기 때문에 NULL이 들어가면 전체 결과가 NULL이 되는 것입니다.

예제

mysql> Select CONCAT_WS(NULL, 'NEW','DELHI');
+--------------------------------+
| CONCAT_WS(NULL, 'NEW','DELHI') |
+--------------------------------+
| NULL                           |
+--------------------------------+
1 row in set (0.00 sec)

정리

  • 모든 인수가 NULL → 빈 문자열(공백) 반환
  • 일부 인수만 NULL → NULL을 제외한 나머지 값 반환
  • 구분 기호가 NULL → NULL 반환

이러한 동작 방식을 미리 알아두면, 데이터베이스에서 문자열을 조합할 때 NULL 처리 로직을 더 안전하게 설계할 수 있습니다.