상세 컨텐츠

본문 제목

[Hive] is not , <> , ! = 조건식의 차이점을 알아보자.

IT/프로그래밍

by James Lee. 2020. 1. 3. 14:11

본문

배경

Hue에서 != null 조건문이 의도한 대로 동작하지 않았다.

특정 id가 null이 아닌 데이터를 검출하고 싶었지만 아래처럼 쿼리를 사용하니 결괏값이 제대로 조회되지 않았다. <> 연산자도 마찬가지였다.

select * 
from table_a 
where id != null -- <> 조건문 또한 동작하지 않음

그런데 is not 연산자를 사용했더니 결과가 제대로 나왔다.

select * 
from table_a 
where id is not null

<>!=동일한 역할을 한다고 알고 있었는데 이처럼 다르게 동작하는 경우가 있는 것 같아서 알아보았다.

본론

is not!= 은 타입 비교 대상의 범위가 차이가 있다.

!=<> 연산자는 원시 타입(Primitive type)에 대해서만 동작하고 is not null모든 타입에 대해 동작한다.

null 은 원시 타입이 아니기 때문에 A != null 은 정상적으로 동작하지 않았던 것이다.

정리

null을 검사할 때에는 is not null 조건식을 사용하도록 하자.

참고 문서

※ 본문 중 잘못된 부분이 있으면 댓글로 알려주시면 감사하겠습니다. :)

관련글 더보기

댓글 영역