Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

논리 함수

아래 함수는 임의의 숫자 타입의 인수에 대해 논리 연산을 수행합니다. 반환값은 UInt8 타입의 0 또는 1이며, 경우에 따라 NULL일 수 있습니다.

인수로 전달된 0은 false로, 0이 아닌 값은 true로 간주됩니다.

and

도입 버전: v1.1.0

두 개 이상의 값에 대한 논리곱을 계산합니다.

설정 short_circuit_function_evaluation은 단락 평가 사용 여부를 제어합니다. 이 설정을 활성화하면 (val_1 AND val_2 AND ... AND val_{i-1})true일 때만 val_i를 평가합니다.

예를 들어, 단락 평가를 사용하면 쿼리 SELECT and(number = 2, intDiv(1, number)) FROM numbers(5)를 실행할 때 0으로 나누기 예외가 발생하지 않습니다. 인수로 전달된 0은 false로 간주하고, 0이 아닌 값은 true로 간주합니다.

구문

and(val1, val2[, ...])

인수

반환 값

다음을 반환합니다.

  • 하나 이상의 인수가 false로 평가되면 0
  • 어떤 인수도 false로 평가되지 않고, 하나 이상의 인수가 NULL이면 NULL
  • 그 밖의 경우 1 Nullable(UInt8)

예시

기본 사용법

SELECT and(0, 1, -2);
0

NULL이 있는 경우

SELECT and(NULL, 1, 10, -2);
\N

not

도입 버전: v1.1.0

값의 논리 부정을 반환합니다. 인수로 0은 false로 간주되며, 0이 아닌 값은 true로 간주됩니다.

구문

not(val)

인수

반환 값

다음을 반환합니다:

  • valfalse로 평가되면 1
  • valtrue로 평가되면 0
  • valNULL이면 NULL Nullable(UInt8)

예시

기본 사용법

SELECT NOT(1);
0

or

도입 버전: v1.1.0

2개 이상의 값에 대한 논리합을 계산합니다.

설정 short_circuit_function_evaluation은 단락 평가 사용 여부를 제어합니다. 활성화되면 val_i((NOT val_1) AND (NOT val_2) AND ... AND (NOT val_{i-1}))true일 때만 평가됩니다.

예를 들어, 단락 평가를 사용하면 쿼리 SELECT or(number = 0, intDiv(1, number) != 0) FROM numbers(5)를 실행할 때 0으로 나누기 예외가 발생하지 않습니다. 인수로 전달된 0은 false로, 0이 아닌 값은 true로 간주됩니다.

구문

or(val1, val2[, ...])

인수

반환 값

다음을 반환합니다:

  • 하나 이상의 인수가 true로 평가되면 1
  • 모든 인수가 false로 평가되면 0
  • 모든 인수가 false로 평가되고 하나 이상의 인수가 NULL이면 NULL Nullable(UInt8)

예시

기본 사용법

SELECT or(1, 0, 0, 2, NULL);
1

NULL이 있는 경우

SELECT or(0, NULL);
\N

xor

도입 버전: v1.1.0

두 개 이상의 값에 대한 논리적 배타적 논리합을 계산합니다. 입력 값이 2개를 초과하면, 함수는 먼저 처음 두 값을 xor한 다음 그 결과를 세 번째 값과 xor하는 방식으로 계속 계산합니다. 인수로 전달된 0은 false로 간주되며, 0이 아닌 값은 true로 간주됩니다.

구문

xor(val1, val2[, ...])

인수

반환 값

다음을 반환합니다.

  • 1 — 값이 2개일 때, 한 값만 false로 평가되는 경우
  • 0 — 값이 2개일 때, 두 값이 모두 false이거나 모두 true로 평가되는 경우
  • NULL — 입력값 중 하나 이상이 NULL인 경우 Nullable(UInt8)

예시

기본 사용법

SELECT xor(0, 1, 1);
0
Navigation