논리 함수

논리 함수 (Logical Functions)

임의의 숫자 타입 인자에 대해 논리 연산을 수행하는 함수들이에요. 결과로 UInt80 또는 1을 반환하고, 경우에 따라 NULL을 반환해요.

인자로 0은 false로, 0이 아닌 값은 true로 간주해요.

출처: 문서

본문

and

Introduced in: v1.1.0

두 개 이상 값의 논리곱(conjunction)을 계산해요.

short_circuit_function_evaluation 설정으로 단락 평가(short-circuit) 사용 여부를 제어해요. 활성화하면 (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로 간주해요.

구문 (Syntax)

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

인자 (Arguments)

  • val1, val2[, ...] — 최소 두 개 값의 목록. Nullable((U)Int*) 또는 Nullable(Float*)

반환 값 (Returned value)

반환:

  • 최소 하나의 인자가 false로 평가되면 0
  • false로 평가되는 인자가 없고 최소 하나의 인자가 NULL이면 NULL
  • 그 외에는 1 Nullable(UInt8)

예시 (Examples)

기본 사용 (Basic usage)

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

NULL 포함 (With NULL)

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

not

Introduced in: v1.1.0

값의 논리 부정을 계산해요. 인자로 0은 false로, 0이 아닌 값은 true로 간주해요.

구문 (Syntax)

not(val)

인자 (Arguments)

  • val — 값. (U)Int* 또는 Float*

반환 값 (Returned value)

반환:

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

예시 (Examples)

기본 사용 (Basic usage)

SELECT NOT(1);
0

or

Introduced in: v1.1.0

두 개 이상 값의 논리합(disjunction)을 계산해요.

short_circuit_function_evaluation 설정으로 단락 평가 사용 여부를 제어해요. 활성화하면 ((NOT val_1) AND (NOT val_2) AND ... AND (NOT val_{i-1}))true일 때만 val_i가 평가돼요.

예를 들어 단락 평가를 쓰면 SELECT or(number = 0, intDiv(1, number) != 0) FROM numbers(5) 쿼리를 실행할 때 0으로 나누기 예외가 발생하지 않아요. 인자로 0은 false로, 0이 아닌 값은 true로 간주해요.

구문 (Syntax)

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

인자 (Arguments)

  • val1, val2[, ...] — 최소 두 개 값의 목록. Nullable((U)Int*) 또는 Nullable(Float*)

반환 값 (Returned value)

반환:

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

예시 (Examples)

기본 사용 (Basic usage)

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

NULL 포함 (With NULL)

SELECT or(0, NULL);
\N

xor

Introduced in: v1.1.0

두 개 이상 값의 논리 배타합(exclusive disjunction)을 계산해요. 입력 값이 둘보다 많으면 함수는 먼저 처음 두 값을 xor한 뒤, 그 결과를 세 번째 값과 xor하는 식으로 이어가요. 인자로 0은 false로, 0이 아닌 값은 true로 간주해요.

구문 (Syntax)

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

인자 (Arguments)

  • val1, val2[, ...] — 최소 두 개 값의 목록. Nullable((U)Int*) 또는 Nullable(Float*)

반환 값 (Returned value)

반환:

  • 두 값에 대해: 한 값이 false로 평가되고 다른 값이 그렇지 않으면 1
  • 두 값에 대해: 두 값 모두 false로 평가되거나 둘 다 true이면 0
  • 입력 중 최소 하나가 NULL이면 NULL. Nullable(UInt8)

예시 (Examples)

기본 사용 (Basic usage)

SELECT xor(0, 1, 1);
0

더 알아보기 (Learn more)

  • ClickHouse 함수 목록 전체는 함수 개요를 참고해요.