3진 논리

SQL 표준에 지정된 것처럼, 3진 논리 또는 3치 논리(3VL)는 TRUE, FALSE, UNKNOWN이라는 세 가지 진리 값을 가진 논리 체계입니다. Snowflake에서는 UNKNOWN이 NULL로 표시됩니다. 3진 논리는 조건자뿐 아니라 부울 식의 계산에도 적용되고, AND, OR, NOT 등의 논리 연산 결과에 영향을 줍니다.

  • 식(예: SELECT 목록)에 사용 시, UNKNOWN 결과는 NULL 값으로 반환됩니다.

  • 조건자(예: WHERE 절)로 사용 시, UNKNOWN 결과는 FALSE로 계산됩니다.

이 항목의 내용:

진리표

이 섹션에서는 비교논리 연산자의 진리표에 대해 설명합니다.

비교 연산자

비교 연산자의 피연산자가 NULL이면 결과는 NULL입니다. 비교 연산자는 다음과 같습니다.

= , != , <>

< , <= , > , >=

GREATEST , LEAST

논리 연산자

BOOLEAN 열 C 가 주어진 경우는 다음과 같습니다.

C 가 다음과 같은 경우:

C AND NULL 의 계산 결과:

C OR NULL 의 계산 결과:

NOT C 의 계산 결과:

TRUE

NULL

TRUE

FALSE

FALSE

FALSE

NULL

TRUE

NULL

NULL

NULL

NULL

또한, 다음 사항이 적용됩니다.

C 가 다음과 같은 경우:

C AND (NOT C) 의 계산 결과:

C OR (NOT C) 의 계산 결과:

NOT (C OR NULL) 의 계산 결과:

TRUE

FALSE

TRUE

FALSE

FALSE

FALSE

TRUE

NULL

NULL

NULL

NULL

NULL

조건식의 사용법 노트

이 섹션에서는 다음 조건식과 관련된 동작을 설명합니다.

IFF 동작

IFF 함수는 3진 논리에 대해 다음 결과를 반환합니다. BOOLEAN 열 C 가 주어진 경우는 다음과 같습니다.

C 가 다음과 같은 경우:

IFF(C, e1, e2) 의 계산 결과:

TRUE

e1

FALSE

e2

NULL

e2

[ NOT ] IN 동작

[ NOT ] IN 함수는 3진 논리에 대해 다음 결과를 반환합니다. 3개의 숫자 열 c1, c2, c3 이 주어진 경우는 다음과 같습니다.

  • c1 IN (c2, c3, ...) 은 구문상 (c1 = c2 or c1 = c3 or ...) 와 같습니다.

    결과적으로, c1 의 값이 NULL일 때 식 c1 IN (c2, c3, NULL) 은 항상 FALSE로 계산됩니다.

  • c1 NOT IN (c2, c3, ... ) 은 구문상 (c1 <> c2 AND c1 <> c3 AND ...) 와 같습니다.

    따라서 c1 NOT IN (c2, c3) 이 TRUE라도 c1 NOT IN (c2, c3, NULL) 은 NULL로 계산됩니다.