Hello

[MySQL] not equal 검색 null 제외 본문

DB

[MySQL] not equal 검색 null 제외

nari0_0 2023. 12. 19. 17:38
728x90

<>, != 같이 안음 연산자 사용 시 Null 값은 제외하고 조회 하는 것을 알게되어 간단하게 정리하려고 합니다.

<>,!= 같지 않음 연산자

 

아래 테이블을 예시로 내용을 정리해보려고합니다.

예시 테이블

 

예) 2000이 아닌 레코드 조회 : 4개의 레코드가 조회 될 것을 기대했으나, id 5만 조회가 되었습니다.

 

방법 1

null 값에 대한 조건을 포함 조회될 수 있도록 해야합니다.

논리 연산자 우선 순위에 따라 결과값이 달라질 수 있어 ()로 조건을 묶어주는 것이 좋습니다.

SELECT * FROM tb_null_test WHERE (CODE IS NULL OR CODE <> 2000);

 

방법 2

NOT, <=> 연산자를 사용해 비교하는 방법

null-safe 동일 성비교 연산자와 not 연산자를 사용해 2000이 아닌 값(null 포함) 비교를해 레코드 추출

SELECT * FROM tb_null_test WHERE NOT CODE <=> 2000;

+) <=> 연산자

<=> 연산자 : NULL-safe equal. 

= 연산자와 같이 동일성 비교를 하지만, 두 피연산자가 모두 NULL이면 NULL이 아닌 1을 반환한다(NULL-safe). 하나의 피연산자가 NULL이면 NULL이 아닌 0을 반환합니다.

= 연산자는 두 피연산자 중 하나라도 NULL이면 NULL을 반환한다.

 

참고 : 

https://dev.mysql.com/doc/refman/8.0/en/non-typed-operators.html

https://dev.mysql.com/doc/refman/8.0/en/working-with-null.html

https://dev.mysql.com/doc/refman/8.0/en/null-values.html

https://andycarter.dev/blog/mysqls-not-equal-operator-doesnt-match-null-values

728x90