presto 에서 특정 값만 제외하고 null등의 모든 값은 가지고 오려고 할때 - IS DISTINCT FROM

sir.YOO_HWAN·2024년 9월 20일
0

SQL

목록 보기
31/31

presto 에서 '중복' 이라는 값만 제외하고 null등의 모든 값은 가지고 오려고 할때 IS DISTINCT FROM을 사용하자

IS DISTINCT FROM는 Presto에서 두 값이 서로 다른지를 비교할 때 사용하는 특별한 비교 연산자입니다. 이 연산자는 일반적인 비교 연산자(=, !=)와 달리, NULL 값도 비교할 수 있습니다. NULL 값은 SQL에서 특별한 값으로 취급되기 때문에, 일반적인 비교 연산에서는 NULL = NULL 또는 NULL != NULL 같은 연산은 TRUE나 FALSE가 아닌 UNKNOWN을 반환합니다.

IS DISTINCT FROM는 이런 NULL 값을 비교하는 문제를 해결해 줍니다. IS DISTINCT FROM는 다음과 같은 동작을 합니다:

두 값이 다르면 TRUE를 반환합니다.
두 값이 같으면 FALSE를 반환합니다.
하나 또는 양쪽 값이 NULL이라도 정상적으로 비교를 수행합니다.
예시:

  1. IS DISTINCT FROM 1 → FALSE
  2. IS DISTINCT FROM 2 → TRUE
  3. IS DISTINCT FROM NULL → TRUE
  4. NULL IS DISTINCT FROM NULL → FALSE
  • 이 연산자는 특히 NULL 값을 안전하게 처리해야 할 때 유용합니다. 일반적인 비교 연산자에서는 NULL과의 비교 결과가 예측할 수 없을 때가 많기 때문에, IS DISTINCT FROM을 사용하면 더 명확한 비교가 가능합니다.

일반적인 비교와 IS DISTINCT FROM 비교

일반적인 비교:


SELECT *
FROM your_table
WHERE column != '중복';

이 쿼리는 column이 '중복'이 아닌 모든 값을 반환하지만, NULL 값은 무시합니다. 왜냐하면 NULL != '중복'의 결과는 UNKNOWN이 되기 때문입니다.

IS DISTINCT FROM를 사용한 비교:


SELECT *
FROM your_table
WHERE column IS DISTINCT FROM '중복';

이 쿼리는 column이 '중복'이 아닌 모든 값을 반환하며, NULL 값도 포함해서 결과를 반환합니다.

profile
data analyst

0개의 댓글