Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 NULL 값 제외하고 NOT NULL 데이터만 조회하는 방법 (IS NOT NULL 활용법)

MySQL에서 NULL과 NOT NULL 값이 섞여 있는 열에서 NULL이 아닌 값만 추출하고 싶다면 IS NOT NULL 조건을 사용하면 됩니다. 이 글에서는 실제 예제를 통해 NULL 값을 걸러내고 원하는 데이터만 다른 테이블로 옮기는 과정을 단계별로 살펴보겠습니다.

1. 테이블 생성하기

먼저 날짜 정보를 저장할 테이블을 만들어 보겠습니다.

mysql> create table DemoTable1
    (
    DueDate date
    );
Query OK, 0 rows affected (0.00 sec)

2. 샘플 데이터 삽입하기

INSERT 명령을 사용해 NULL 값과 일반 날짜 값을 함께 넣어 보겠습니다.

mysql> insert into DemoTable1 values('2019-09-10');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1 values(NULL);
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1 values('2019-11-10');
Query OK, 1 row affected (0.00 sec)

3. 전체 레코드 확인하기

SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.

mysql> select * from DemoTable1;

실행 결과는 다음과 같습니다. 중간에 NULL 값이 포함되어 있는 것을 확인할 수 있습니다.

+------------+
| DueDate    |
+------------+
| 2019-09-10 |
| NULL       |
| 2019-11-10 |
+------------+
3 rows in set (0.00 sec)

4. NULL 값 제외하고 데이터 옮기기

이제 두 번째 테이블을 생성한 뒤, IS NOT NULL 조건을 적용해 NULL이 아닌 값만 새 테이블로 복사해 보겠습니다.

mysql> create table DemoTable2
    (
    AdmissionDate date
    );
Query OK, 0 rows affected (0.00 sec)

아래 쿼리는 WHERE 절에 IS NOT NULL을 사용하여 DueDate 열에서 NULL이 아닌 값만 골라내어 AdmissionDate 열에 삽입합니다.

mysql> insert into DemoTable2(AdmissionDate)
    select DueDate from DemoTable1 where DueDate IS NOT NULL;
Query OK, 2 rows affected (0.00 sec)
Records: 2  Duplicates: 0  Warnings: 0

5. 최종 결과 확인하기

두 번째 테이블의 모든 레코드를 SELECT 문으로 조회해 보겠습니다.

mysql> select * from DemoTable2;

결과를 보면 NULL 값은 완전히 제외되고 유효한 날짜 값 2개만 정상적으로 들어간 것을 확인할 수 있습니다.

+---------------+
| AdmissionDate |
+---------------+
| 2019-09-10    |
| 2019-11-10    |
+---------------+
2 rows in set (0.00 sec)

정리

IS NOT NULL은 MySQL에서 NULL 값을 필터링할 때 가장 기본적이면서도 강력한 방법입니다. 단순히 = NULL로 비교하면 아무 결과도 반환되지 않으므로, 반드시 IS NULL 또는 IS NOT NULL 구문을 사용해야 한다는 점을 기억하세요. 이 방식은 데이터 정제, 백업 테이블 생성, 조건부 조회 등 다양한 상황에서 유용하게 활용됩니다.