MySQL에서 NULL 값 검색하기
MySQL에서 특정 컬럼의 값이 NULL인 행을 찾으려면 일반적인 비교 연산자(=) 대신 IS NULL 속성을 사용해야 합니다. NULL은 '값이 없음'을 의미하는 특수한 상태이기 때문에 등호(=)로는 비교할 수 없으며, 반드시 IS NULL 또는 IS NOT NULL을 사용해야 합니다.
아래에서 실제 예제를 통해 단계별로 살펴보겠습니다.
1단계: 테이블 생성
먼저 예제에 사용할 테이블을 생성합니다.
mysql> create table DemoTable
(
EmployeeName varchar(100),
EmployeeAge int
);
Query OK, 0 rows affected (0.59 sec)
2단계: 데이터 삽입
INSERT 명령어를 사용해 몇 개의 레코드를 추가합니다. 이때 Bob 직원의 나이는 의도적으로 NULL로 입력합니다.
mysql> insert into DemoTable values('Chris',32);
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable values('David',45);
Query OK, 1 row affected (0.09 sec)
mysql> insert into DemoTable values('Bob',NULL);
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable values('Sam',28);
Query OK, 1 row affected (0.14 sec)3단계: 전체 레코드 확인
SELECT 문으로 테이블의 모든 레코드를 조회합니다.
mysql> select *from DemoTable;
실행 결과는 다음과 같습니다.
+--------------+-------------+
| EmployeeName | EmployeeAge |
+--------------+-------------+
| Chris | 32 |
| David | 45 |
| Bob | NULL |
| Sam | 28 |
+--------------+-------------+
4 rows in set (0.00 sec)
4단계: IS NULL로 NULL 값 조회
이제 IS NULL 조건을 사용해 EmployeeAge가 NULL인 행만 검색합니다.
mysql> select *from DemoTable where EmployeeAge IS NULL;
실행 결과는 다음과 같습니다.
+--------------+-------------+
| EmployeeName | EmployeeAge |
+--------------+-------------+
| Bob | NULL |
+--------------+-------------+
1 row in set (0.00 sec)
정리 및 참고 사항
위 예제에서 확인할 수 있듯이, 나이가 NULL인 Bob만 정확하게 조회되었습니다. 만약 WHERE EmployeeAge = NULL처럼 등호를 사용하면 아무런 결과도 반환되지 않으니 주의해야 합니다.
반대로 NULL이 아닌 값만 조회하고 싶다면 IS NOT NULL을 사용하면 됩니다. 예를 들어 select *from DemoTable where EmployeeAge IS NOT NULL;을 실행하면 Chris, David, Sam 세 명의 레코드가 반환됩니다.