MySQL에서 NULL 안전 동등 연산자(<=>)를 행(row) 비교와 함께 사용하면, 각 열을 개별적으로 비교한 결과를 논리곱(AND)으로 결합한 것과 완전히 동일하게 작동합니다.
기본 원리
예를 들어 다음과 같은 행 비교 표현식은
(A, B) <=> (C, D)
아래 표현식과 결과가 정확히 같습니다.
(A <=> C) AND (B <=> D)
즉, 두 행의 각 구성 요소를 순서대로 NULL 안전 방식으로 비교한 뒤, 모든 비교 결과가 참일 때 전체가 참이 됩니다.
실제 예제
다음 예제를 통해 이 동작을 직접 확인할 수 있습니다.
mysql> Select (100,50) <=> (50,100); +-----------------------+ | (100,50) <=> (50,100) | +-----------------------+ | 0 | +-----------------------+ 1 row in set (0.00 sec) mysql> Select (100,50) <=> (100,50); +-----------------------+ | (100,50) <=> (100,50) | +-----------------------+ | 1 | +-----------------------+ 1 row in set (0.00 sec)
결과 분석
첫 번째 쿼리에서는 (100, 50)과 (50, 100)을 비교했습니다. 첫 번째 요소 100과 50은 서로 다르고, 두 번째 요소 50과 100도 서로 다르므로 최종 결과는 0(거짓)이 반환됩니다.
반면 두 번째 쿼리에서는 (100, 50)과 (100, 50)을 비교했는데, 모든 요소가 일치하므로 결과는 1(참)이 됩니다.
이처럼 NULL 안전 연산자는 일반 등호(=) 연산자와 달리 피연산자 중 하나가 NULL이어도 오류나 NULL 대신 명확한 참/거짓 값을 반환하기 때문에, NULL 값이 포함될 가능성이 있는 데이터를 행 단위로 비교할 때 특히 유용합니다.