WHERE 절을 사용하면 SELECT의 FROM 절에서 가져오는 데이터를 필터링할 수 있습니다.
WHERE 절이 있으면 그 뒤에는 UInt8 유형의 표현식이 와야 합니다.
이 표현식의 평가 결과가 0인 행은 이후 처리나 결과에서 제외됩니다.
WHERE 절 뒤의 표현식은 비교 및 논리 연산자, 또는 여러 일반 함수와 함께 자주 사용됩니다.
기반 테이블 엔진이 이를 지원하면 WHERE 표현식은 인덱스와 파티션 프루닝을 활용할 수 있도록 평가됩니다.
PREWHERE
PREWHERE라는 필터링 최적화도 있습니다.
Prewhere는 필터링을 더 효율적으로 적용하기 위한 최적화입니다.
PREWHERE 절을 명시적으로 지정하지 않아도 기본적으로 활성화됩니다.NULL 검사하기
NULL인지 확인해야 하는 경우 다음을 사용합니다:
IS NULL또는isNullIS NOT NULL또는isNotNull
NULL이 포함된 표현식은 절대 조건을 만족하지 않습니다.
논리 연산자를 사용한 데이터 필터링
WHERE 절과 함께 다음 논리 함수를 사용할 수 있습니다:
조건으로 UInt8 컬럼 사용하기
UInt8 컬럼을 불리언 조건으로 직접 사용할 수 있습니다. 이때 0은 false이고, 0이 아닌 모든 값(일반적으로 1)은 true입니다.
이에 대한 예시는 아래 섹션에 있습니다.
비교 연산자 사용
패턴 매칭과 조건 표현식
WHERE 절에서 패턴 매칭과 조건 표현식을 사용할 수 있습니다.
사용 예시는 “패턴 매칭과 조건 표현식”을 참조하십시오.
리터럴, 컬럼 또는 서브쿼리가 있는 표현식
WHERE 절 뒤에 오는 표현식에는 리터럴, 컬럼 또는 서브쿼리도 포함될 수 있습니다. 서브쿼리는 조건에 사용할 값을 반환하는 중첩된 SELECT SQL 문입니다.
복잡한 조건에서는 리터럴, 컬럼, 서브쿼리를 함께 사용할 수 있습니다:
예시
NULL 검사하기
NULL 값이 포함된 쿼리:
논리 연산자를 사용한 데이터 필터링
AND - 두 조건이 모두 참이어야 합니다:
OR - 하나 이상의 조건이 참이어야 합니다:
NOT - 조건을 부정합니다:
XOR - 정확히 하나의 조건만 참이어야 합니다(둘 다 참이면 안 됨):
AND, OR, NOT, XOR)이 일반적으로 가독성이 더 좋지만, 함수 구문은 복잡한 표현식이나 동적 쿼리를 작성할 때 유용할 수 있습니다.
조건으로 UInt8 컬럼 사용하기
비교 연산자 사용
true에 대한 명시적 동등 비교(= 1 또는 = true):
false와 명시적으로 같음을 비교(= 0 또는 = false):
!= 0 또는 != false):
IN 연산자 사용:
아래 예시에서 (1, true)는 tuple입니다.