MySQL에서 특정 열의 값이 NULL인지 확인하려면 IS NULL 연산자를 사용해야 합니다. 많은 초보 개발자가 =(비교 연산자)로 NULL을 비교하려고 하지만, 이는 올바른 방법이 아닙니다. 그 이유는 NULL이 '값'이 아니라 '값이 존재하지 않음'을 나타내는 상태이기 때문입니다.
IS NULL 연산자를 사용한 NULL 확인 예제
다음은 'employee' 테이블의 데이터를 이용해 IS NULL 연산자의 동작을 보여주는 예제입니다.
mysql> Select * from Employee WHERE Salary IS NULL; +----+-------+--------+ | ID | Name | Salary | +----+-------+--------+ | 7 | Aryan | NULL | | 8 | Vinay | NULL | +----+-------+--------+ 2 rows in set (0.00 sec)
위 쿼리는 IS NULL 연산자를 사용하여 Salary(급여) 열이 NULL인 행들만 정상적으로 조회한 것을 볼 수 있습니다.
= 연산자로 NULL을 비교하면 안 되는 이유
mysql> Select * from employee where salary = NULL; Empty set (0.00 sec)
반면 위 쿼리는 =(비교 연산자)를 사용했기 때문에 결과가 없는 빈 결과 집합(Empty set)을 반환합니다. NULL은 값이 아니므로 어떤 값과도 동등 비교(=)할 수 없으며, 심지어 NULL = NULL 조차 참(TRUE)으로 평가되지 않습니다.
따라서 MySQL에서 NULL 여부를 판단할 때는 반드시 IS NULL 또는 IS NOT NULL 연산자를 사용해야 합니다. 이 원칙만 기억하면 NULL 관련 쿼리 오류를 손쉽게 피할 수 있습니다.