MySQL에서 NULL과의 산술 연산 결과
MySQL에서는 산술 연산의 인수 중 하나라도 NULL이면 결과가 항상 NULL로 반환됩니다. 이는 NULL이 '알 수 없는 값(unknown)'을 의미하기 때문입니다. 알 수 없는 값과의 어떤 연산도 그 결과를 확정할 수 없으므로, MySQL은 해당 연산의 결과를 NULL로 처리합니다.
사칙연산 예제
다음 예제는 덧셈, 뺄셈, 곱셈, 나눗셈 각각에 NULL이 인수로 포함된 경우의 실행 결과를 보여줍니다.
mysql> Select 10*NULL; +---------+ | 10*NULL | +---------+ | NULL | +---------+ 1 row in set (0.12 sec) mysql> Select 10+NULL; +---------+ | 10+NULL | +---------+ | NULL | +---------+ 1 row in set (0.00 sec) mysql> Select 10-NULL; +---------+ | 10-NULL | +---------+ | NULL | +---------+ 1 row in set (0.07 sec) mysql> Select 10/NULL; +---------+ | 10/NULL | +---------+ | NULL | +---------+ 1 row in set (0.00 sec)
위 네 가지 산술 연산 모두 결과가 NULL로 출력되었습니다. 그 이유는 각 연산식의 인수 중 하나가 NULL이기 때문입니다.
NULL 처리 방법: IFNULL() 활용
실무에서는 IFNULL() 또는 COALESCE() 함수를 사용해 NULL을 기본값으로 대체한 후 연산을 수행하면 원하는 숫자 결과를 얻을 수 있습니다.
mysql> Select 10 + IFNULL(NULL, 0); +----------------------+ | 10 + IFNULL(NULL, 0) | +----------------------+ | 10 | +----------------------+ 1 row in set (0.00 sec)
이처럼 NULL 값을 0으로 치환하면 산술 연산이 정상적으로 수행됩니다. 데이터 분석이나 집계 쿼리 작성 시 NULL로 인한 의도치 않은 결과를 방지하려면 항상 NULL 여부를 먼저 점검하는 습관이 중요합니다.