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

MySQL <=> 연산자란? NULL 안전 동등 비교 연산자 완벽 정리

MySQL에서 사용되는 <=> 연산자의 용도와 특징을 자세히 살펴보겠습니다.

1. 일반적인 값 비교 (= 연산자와 유사)

<=> 연산자는 = 연산자와 마찬가지로 두 값이 서로 같으면 참(1), 다르면 거짓(0)을 반환합니다. 즉, NULL이 포함되지 않은 일반적인 값 비교에서는 = 연산자와 <=> 연산자가 동일하게 작동합니다.

2. NULL 값 비교 시 나타나는 차이점

두 연산자의 결정적인 차이는 NULL을 처리하는 방식에 있습니다.

  • <=> 연산자: 어떤 값과 NULL을 비교하면 0을 반환하고, NULL <=> NULL처럼 NULL과 NULL을 비교하면 1을 반환합니다.
  • = 연산자: 어떤 값과 NULL을 비교하면 결과가 항상 NULL이 되며, NULL = NULL 역시 1이 아닌 NULL을 반환합니다.

<=> 연산자 예제

위에서 설명한 두 가지 경우를 확인할 수 있는 쿼리는 다음과 같습니다.

mysql> SELECT 10 <=> 10, NULL <=> NULL, 10 <=> NULL;

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

+-----------+---------------+-------------+
| 10 <=> 10 | NULL <=> NULL | 10 <=> NULL |
+-----------+---------------+-------------+
|         1 |              1|            0|
+-----------+---------------+-------------+
1 row in set (0.00 sec)

위 출력 결과를 보면 NULL <=> NULL이 NULL이 아닌 1을 반환하는 것을 확인할 수 있습니다.

= 연산자 예제

이번에는 = 연산자를 사용한 예제입니다. 쿼리는 다음과 같습니다.

mysql> SELECT 10 = 10, NULL = NULL, 10 = NULL;

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

+---------+-------------+-----------+
| 10 = 10 | NULL = NULL | 10 = NULL |
+---------+-------------+-----------+
|       1 |        NULL |      NULL |
+---------+-------------+-----------+
1 row in set (0.00 sec)

반면 = 연산자를 사용한 경우에는 NULL = NULL이 1이 아니라 NULL을 반환하는 것을 볼 수 있습니다.

마무리 정리

<=> 연산자는 흔히 'NULL 안전 동등 연산자(NULL-safe equal operator)'라고 불리며, SQL 표준의 IS NOT DISTINCT FROM과 유사한 기능을 제공합니다. NULL 값이 포함된 데이터를 비교할 때 예측 가능한 결과를 얻고 싶다면 <=> 연산자를 활용하는 것이 좋습니다.