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

MySQL에서 NULL에 '=', '<', '<>' 비교 연산자를 사용할 수 없는 이유

MySQL에서 NULL과 비교 연산자를 함께 사용할 수 없는 이유

MySQL에서 NULL은 '값이 존재하지 않음' 또는 '알 수 없는 값'을 나타내는 특수한 표시입니다. 바로 이 성질 때문에 '=', '<', '<>'와 같은 일반적인 비교 연산자를 NULL과 함께 사용하면 의미 있는 결과를 얻을 수 없습니다.

어떤 값이든 알 수 없는 값(NULL)과 비교하면, 그 비교 결과 자체도 '알 수 없음', 즉 NULL로 반환됩니다. 아래 예제를 통해 이 개념을 확인해 보겠습니다.

mysql> Select 10 = NULL, 10< NULL, 10<>NULL;
+-----------+----------+----------+
| 10 = NULL | 10< NULL | 10<>NULL |
+-----------+----------+----------+
|      NULL |     NULL |     NULL |
+-----------+----------+----------+
1 row in set (0.07 sec)

위 결과 집합을 보면 세 가지 비교 모두 TRUE나 FALSE가 아닌 NULL을 반환합니다. 10이 NULL보다 큰지, 작은지, 같은지 판단할 수 없기 때문에 이러한 결과는 어떤 의미도 갖지 못합니다.

그렇다면 NULL은 어떻게 비교해야 할까?

NULL 값을 확인하려면 '=' 대신 IS NULL, '<>' 대신 IS NOT NULL 연산자를 사용해야 합니다. 다음 예제처럼 말입니다.

mysql> Select 10 IS NULL, 10 IS NOT NULL;
+------------+----------------+
| 10 IS NULL | 10 IS NOT NULL |
+------------+----------------+
|          0 |              1 |
+------------+----------------+
1 row in set (0.00 sec)

정리하면, NULL은 '알 수 없는 값'이므로 일반 비교 연산자와 함께 사용하면 항상 NULL이 반환되어 무의미한 결과가 됩니다. 따라서 NULL 여부를 판별할 때는 반드시 IS NULL 또는 IS NOT NULL 연산자를 사용하는 것이 올바른 방법입니다.