MySQL ASCII() 함수와 NULL 처리 방식
MySQL의 ASCII() 함수는 문자열의 첫 번째 문자에 해당하는 숫자 코드(ASCII 코드값)를 반환하는 함수입니다. 그런데 이 함수에 NULL을 입력하면 결과가 어떻게 될까요? 답은 어떤 형태로 NULL을 전달하느냐에 따라 달라집니다. 즉, 실제 NULL 값을 입력했는지, 아니면 'NULL'이라는 문자열을 입력했는지에 따라 반환 결과가 완전히 다릅니다.
예제로 확인하기
아래 예제를 통해 두 경우의 차이를 직접 확인해 보겠습니다.
mysql> SELECT ASCII(null);
+-------------+
| ASCII(null) |
+-------------+
| NULL |
+-------------+
1 row in set (0.00 sec)
mysql> SELECT ASCII('null');
+---------------+
| ASCII('null') |
+---------------+
| 110 |
+---------------+
1 row in set (0.00 sec)
mysql> Select ASCII(NULL);
+-------------+
| ASCII(NULL) |
+-------------+
| NULL |
+-------------+
1 row in set (0.00 sec)
mysql> Select ASCII('NULL');
+---------------+
| ASCII('NULL') |
+---------------+
| 78 |
+---------------+
1 row in set (0.00 sec)결과 분석
위 실행 결과에서 알 수 있듯이, 두 가지 경우로 나누어 설명할 수 있습니다.
1. 문자열로 NULL을 입력한 경우 ('NULL' 또는 'null')
ASCII() 함수는 문자열의 첫 번째 문자에 대한 숫자 코드를 반환합니다. 따라서 'NULL'을 입력하면 첫 글자인 대문자 N의 ASCII 코드인 78을 반환하고, 'null'을 입력하면 소문자 n의 ASCII 코드인 110을 반환합니다.
2. 단순히 NULL 값을 입력한 경우
실제 NULL 값을 인수로 전달하면 함수는 유효한 문자를 받지 못한 것으로 판단하여 출력으로 NULL을 반환합니다.
정리하자면, ASCII() 함수에 따옴표 없는 NULL을 넣으면 NULL이 반환되고, 따옴표로 감싼 'NULL' 또는 'null' 문자열을 넣으면 각각 첫 문자 N(78), n(110)의 ASCII 코드값이 반환된다는 점을 기억하시기 바랍니다.