MySQL CHAR_LENGTH() 함수와 NULL 처리 방식
MySQL에서 CHAR_LENGTH() 함수의 결과값은 인자를 어떻게 전달하느냐에 따라 달라집니다. 즉, NULL을 문자열('NULL') 형태로 전달하는지, 아니면 단순히 NULL 값 자체를 전달하는지에 따라 반환 결과가 완전히 다릅니다.
아래 예제를 통해 두 경우의 차이를 직접 확인해 보겠습니다.
1. 단순 NULL 값을 전달하는 경우
mysql> Select CHAR_LENGTH(NULL); +-------------------+ | CHAR_LENGTH(NULL) | +-------------------+ | NULL | +-------------------+ 1 row in set (0.00 sec)
2. 'NULL'이라는 문자열을 전달하는 경우
mysql> Select CHAR_LENGTH('NULL');
+---------------------+
| CHAR_LENGTH('NULL') |
+---------------------+
| 4 |
+---------------------+
1 row in set (0.00 sec)
결과 분석
위 실행 결과에서 알 수 있듯이, 두 경우의 동작은 다음과 같습니다.
- 'NULL'을 문자열로 전달한 경우: 함수는 해당 문자열의 실제 문자 개수인 4를 정상적으로 반환합니다.
- NULL 값을 그대로 전달한 경우: 유효한 문자열이 아니기 때문에 함수는 NULL을 반환합니다.
이처럼 MySQL의 대부분의 문자열 함수와 마찬가지로 CHAR_LENGTH() 함수도 NULL 입력에 대해 NULL을 반환한다는 점을 기억해 두면, 쿼리 작성 시 예기치 않은 결과를 방지하는 데 도움이 됩니다.