MySQL에서 NULL 값 무시하고 나머지 값만 표시하기
MySQL에서 데이터를 조회할 때 특정 컬럼에 NULL 값이 포함된 행을 제외하고, 실제 값이 존재하는 데이터만 가져오고 싶은 경우가 자주 있습니다. 이럴 때 사용하는 것이 바로 IS NOT NULL 조건입니다.
이번 글에서는 예제 테이블을 만들고, NULL 값을 무시한 채 나머지 값만 표시하는 방법을 단계별로 살펴보겠습니다.
1. 예제 테이블 생성
먼저 학생 이름과 점수를 저장할 테이블을 생성합니다.
mysql> create table DemoTable1458
-> (
-> StudentName varchar(20),
-> StudentScore int
-> );
Query OK, 0 rows affected (0.52 sec)
2. 샘플 데이터 삽입
INSERT 문을 사용해 몇 개의 레코드를 추가합니다. 이때 일부 학생의 점수는 의도적으로 NULL로 입력합니다.
mysql> insert into DemoTable1458 values('Chris Brown',56);
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable1458 values('David Miller',NULL);
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable1458 values('John Doe',78);
Query OK, 1 row affected (0.08 sec)
mysql> insert into DemoTable1458 values('Adam Smith',NULL);
Query OK, 1 row affected (0.12 sec)3. 전체 데이터 확인
SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.
mysql> select * from DemoTable1458;
실행 결과는 다음과 같습니다.
+--------------+--------------+
| StudentName | StudentScore |
+--------------+--------------+
| Chris Brown | 56 |
| David Miller | NULL |
| John Doe | 78 |
| Adam Smith | NULL |
+--------------+--------------+
4 rows in set (0.00 sec)
위 결과에서 David Miller와 Adam Smith의 점수는 NULL로 저장되어 있는 것을 확인할 수 있습니다.
4. IS NOT NULL로 NULL 값 제외하기
NULL 값을 무시하고 점수가 있는 학생만 조회하려면 WHERE 절에 IS NOT NULL 조건을 추가하면 됩니다.
mysql> select StudentName,StudentScore from DemoTable1458
-> where StudentScore IS NOT NULL;
실행 결과는 다음과 같습니다.
+-------------+--------------+
| StudentName | StudentScore |
+-------------+--------------+
| Chris Brown | 56 |
| John Doe | 78 |
+-------------+--------------+
2 rows in set (0.00 sec)
정리 및 참고 사항
IS NOT NULL 조건을 사용하면 해당 컬럼에 유효한 값이 있는 행만 필터링하여 조회할 수 있습니다. 반대로 NULL인 행만 찾고 싶다면 IS NULL을 사용하면 됩니다.
주의할 점은 NULL 비교에 = NULL이나 != NULL과 같은 일반 비교 연산자를 사용하면 안 된다는 것입니다. NULL은 '값이 없음'을 의미하는 특수한 상태이기 때문에 반드시 IS NULL 또는 IS NOT NULL 구문을 사용해야 올바르게 동작합니다.