ClickHouse/docs/ru/sql-reference/statements/select/where.md
2022-04-09 07:29:05 -06:00

2.4 KiB
Raw Blame History

sidebar_label
WHERE

Секция WHERE

Позволяет задать выражение, которое ClickHouse использует для фильтрации данных перед всеми другими действиями в запросе кроме выражений, содержащихся в секции PREWHERE. Обычно это выражение с логическими операторами.

Результат выражения должен иметь тип UInt8.

ClickHouse использует в выражении индексы, если это позволяет движок таблицы.

:::note "Примечание"
Существует оптимизация фильтрации под названием [PREWHERE](prewhere.md).
:::

Если в секции необходимо проверить NULL, то используйте операторы IS NULL и IS NOT NULL, а также соответствующие функции isNull и isNotNull. В противном случае выражение будет считаться всегда не выполненным.

Пример

Чтобы найти числа, которые кратны 3 и больше 10, можно выполнить запрос к таблице numbers:

SELECT number FROM numbers(20) WHERE (number > 10) AND (number % 3 == 0);

Результат:

┌─number─┐
│     12 │
│     15 │
│     18 │
└────────┘

Пример проверки на NULL:

CREATE TABLE t_null(x Int8, y Nullable(Int8)) ENGINE=MergeTree() ORDER BY x;
INSERT INTO t_null VALUES (1, NULL), (2, 3);

SELECT * FROM t_null WHERE y IS NULL;
SELECT * FROM t_null WHERE y != 0;

Результат:

┌─x─┬────y─┐
│ 1 │ ᴺᵁᴸᴸ │
└───┴──────┘
┌─x─┬─y─┐
│ 2 │ 3 │
└───┴───┘