논리 함수
아래 함수들은 임의의 숫자형 타입 인수를 대상으로 논리 연산을 수행합니다.
이 함수들은 UInt8 타입의 0 또는 1을, 일부 경우에는 NULL을 반환합니다.
인수가 0이면 false로, 0이 아닌 값이면 true로 간주합니다.
and
도입 버전: v1.1
두 개 이상의 값에 대한 논리곱을 계산합니다.
설정 short_circuit_function_evaluation은 단락(short-circuit) 평가 사용 여부를 제어합니다.
활성화된 경우, val_i는 (val_1 AND val_2 AND ... AND val_{i-1})가 true일 때만 평가됩니다.
예를 들어, 단락 평가가 활성화된 상태에서는 SELECT and(number = 2, intDiv(1, number)) FROM numbers(5) 쿼리를 실행해도 0으로 나누기 예외가 발생하지 않습니다.
인자로 전달된 값이 0이면 false로, 0이 아니면 true로 간주됩니다.
구문
인수
val1, val2[, ...]— 최소 두 개의 값으로 구성된 목록입니다.Nullable((U)Int*)또는Nullable(Float*)
반환 값
다음을 반환합니다:
- 하나 이상의 인수가
false로 평가되면0 - 어느 인수도
false로 평가되지 않고 적어도 하나의 인수가NULL이면NULL - 그 외의 경우에는
1Nullable(UInt8)
예시
기본 사용법
NULL이 포함된 경우
not
도입 버전: v1.1
값의 논리 부정을 계산합니다.
인수가 0이면 false로, 0이 아닌 값이면 true로 간주됩니다.
구문
인수
반환값
다음을 반환합니다.
val이false로 평가되면1val이true로 평가되면0val이NULL이면NULLNullable(UInt8)
예시
기본 사용
or
도입 버전: v1.1
두 개 이상의 값에 대한 논리합을 계산합니다.
short_circuit_function_evaluation 설정은 단락 평가(short-circuit 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 로 간주됩니다.
구문
인수
val1, val2[, ...]— 2개 이상의 값으로 이루어진 목록입니다.Nullable((U)Int*)또는Nullable(Float*)
반환 값
다음을 반환합니다:
- 하나 이상의 인수가
true로 평가되면1 - 모든 인수가
false로 평가되면0 - 모든 인수가
false로 평가되고 적어도 하나의 인수가NULL이면NULLNullable(UInt8)
예시
기본 사용법
NULL 포함 시
xor
도입된 버전: v1.1
두 개 이상의 값에 대한 논리적 배타적 논리합을 계산합니다.
두 개를 초과하는 입력 값이 주어지면, 함수는 먼저 처음 두 값을 xor 연산하고, 이어서 그 결과를 세 번째 값과 xor 연산하는 식으로 계속 수행합니다.
인수가 0이면 false로, 0이 아닌 값이면 true로 간주합니다.
구문
인수
val1, val2[, ...]— 최소 2개의 값 목록입니다.Nullable((U)Int*)또는Nullable(Float*)
반환 값
다음 값을 반환합니다:
1— 두 값인 경우, 한 값은false로 평가되고 다른 값은 그렇지 않은 경우0— 두 값인 경우, 두 값 모두false로 평가되거나 두 값 모두true로 평가되는 경우NULL— 입력값 중 하나 이상이NULL인 경우.Nullable(UInt8)
예시
기본 사용법