WHERE позволяет фильтровать данные, поступающие из предложения FROM оператора SELECT.
Если есть предложение WHERE, за ним должно следовать выражение типа UInt8.
Строки, для которых это выражение вычисляется в 0, исключаются из дальнейших преобразований или из результата.
Выражение после предложения WHERE часто используется с операторами сравнения и логическими операторами, а также с одной из множества обычных функций.
При вычислении выражения WHERE могут использоваться индексы и отсечение партиций, если базовый движок таблицы это поддерживает.
PREWHEREСуществует также оптимизация фильтрации под названием
PREWHERE.
PREWHERE — это оптимизация, которая позволяет применять фильтрацию более эффективно.
Она включена по умолчанию, даже если предложение PREWHERE явно не указано.Проверка значения NULL
NULL, используйте:
IS NULLилиisNullIS NOT NULLилиisNotNull
NULL никогда не будет истинным.
Фильтрация данных с помощью логических операторов
WHERE, чтобы объединять несколько условий:
Использование столбцов UInt8 в качестве условия
UInt8 можно напрямую использовать в качестве логических условий: 0 соответствует false, а любое ненулевое значение (обычно 1) — true.
Пример приведён в разделе ниже.
Использование операторов сравнения
Сопоставление с шаблоном и условные выражения
WHERE можно использовать сопоставление с шаблоном и условные выражения.
См. раздел “Сопоставление с шаблоном и условные выражения”, чтобы посмотреть примеры использования.
Выражение с литералами, столбцами или подзапросами
WHERE также может включать литералы, столбцы или подзапросы — вложенные операторы SELECT, которые возвращают значения для использования в условиях.
Вы можете комбинировать литералы, столбцы и подзапросы в сложных условиях:
Примеры
Проверка значения NULL
NULL:
Фильтрация данных с помощью логических операторов
AND — оба условия должны быть истинны:
OR — хотя бы одно из условий должно выполняться:
NOT — отрицает условие:
XOR — должно быть истинным ровно одно условие (но не оба сразу):
AND, OR, NOT, XOR) обычно более удобочитаем, но синтаксис функций может быть полезен в сложных выражениях или при построении динамических запросов.
Использование столбцов UInt8 в качестве условия
Использование операторов сравнения
= 1 или = true):
= 0 or = false):
!= 0 или != false):
IN:
В примере ниже (1, true) — кортеж.