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

MySQL에서 != NULL과 IS NOT NULL의 차이점 완벽 정리

MySQL에서 값을 != NULL로 비교하면 결과는 항상 NULL을 반환합니다. 이는 SQL에서 NULL은 '알 수 없는 값'으로 취급되기 때문에, 어떤 값과 비교하더라도 참·거짓을 판별할 수 없기 때문입니다. 따라서 != NULL 조건은 실질적으로 아무 의미가 없습니다.

반면 IS NOT NULL은 해당 값이 NULL인지 아닌지를 명확하게 판별하는 전용 연산자입니다.

두 방식의 차이를 직접 확인하기 위해 먼저 테이블을 생성해 보겠습니다.

1. 테이블 생성

mysql> create table DemoTable1970
    (
    Value int
    );
Query OK, 0 rows affected (0.00 sec)

2. 데이터 삽입

insert 명령어를 사용해 일반 값과 NULL 값을 하나씩 저장합니다.

mysql> insert into DemoTable1970 values(10);
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1970 values(NULL);
Query OK, 1 row affected (0.00 sec)

3. 저장된 데이터 확인

select 문으로 테이블의 모든 레코드를 조회합니다.

mysql> select * from DemoTable1970;

실행 결과는 다음과 같습니다.

+-------+
| Value |
+-------+
|    10 |
|  NULL |
+-------+
2 rows in set (0.00 sec)

4. != NULL과 IS NOT NULL 비교

이제 두 방식의 차이를 한눈에 볼 수 있는 쿼리를 실행해 보겠습니다.

mysql> select Value!=NULL as Output1, Value IS NOT NULL as Output2 from DemoTable1970;

실행 결과는 다음과 같습니다.

+---------+---------+
| Output1 | Output2 |
+---------+---------+
|    NULL |       1 |
|    NULL |       0 |
+---------+---------+
2 rows in set (0.00 sec)

결과 분석

  • Output1 (!= NULL): 값이 10이든 NULL이든 상관없이 항상 NULL을 반환합니다. 즉, 어떤 행도 필터링하지 못하므로 사용할 수 없는 조건입니다.
  • Output2 (IS NOT NULL): 값이 10인 행에서는 1(참)을, NULL인 행에서는 0(거짓)을 반환하여 정확한 판별이 가능합니다.

결론적으로 MySQL에서 NULL 여부를 검사할 때는 반드시 IS NOT NULL 또는 IS NULL을 사용해야 하며, != NULL이나 = NULL 같은 비교 연산자는 절대 사용해서는 안 됩니다.