Перейти к основному содержанию

Правила сравнения

Приведённые ниже функции сравнения возвращают 0 или 1 и имеют тип UInt8. Сравнивать можно только значения из одной и той же группы (например, UInt16 и UInt64), но не из разных групп (например, UInt16 и DateTime). Можно сравнивать числа и строки, а также строки с датами и даты со временем. Для кортежей и массивов используется лексикографическое сравнение, то есть сравнивается каждый соответствующий элемент кортежа/массива слева и справа. Можно сравнивать следующие типы:
  • числа и десятичные числа
  • строки и строки фиксированной длины
  • даты
  • даты со временем
  • кортежи (лексикографическое сравнение)
  • массивы (лексикографическое сравнение)
Строки сравниваются побайтно. Это может приводить к неожиданным результатам, если одна из строк содержит многобайтные символы в кодировке UTF-8. Строка S1, для которой другая строка S2 является префиксом, считается длиннее S2.

equals

Добавленный в: v1.1.0 Сравнивает два значения на равенство. Синтаксис
equals(a, b)
        -- a = b
        -- a == b
Аргументы
  • a — Первое значение.* - b — Второе значение.*
Возвращаемое значение Возвращает 1, если a равно b, иначе — 0 UInt8 Примеры Пример использования
Query
SELECT 1 = 1, 1 = 2;
Response
┌─equals(1, 1)─┬─equals(1, 2)─┐
│            1 │            0 │
└──────────────┴──────────────┘

globalIn

Добавленный в: v1.1.0 То же, что и in, но использует глобальное распределение множества в распределённых запросах. Множество отправляется на все удалённые серверы. Синтаксис
globalIn(x, set)
Аргументы
  • x — Значение, которое нужно проверить. - set — Множество значений.
Возвращаемое значение Возвращает 1, если x входит в множество, в противном случае — 0. UInt8 Примеры Базовое использование
Query
SELECT 1 IN (1, 2, 3)
Response
1

globalInIgnoreSet

Добавленный в: v1.1.0 То же, что и in, но использует глобальное распространение множества в распределенных запросах. Множество отправляется на все удаленные серверы. Это вариант IgnoreSet, используемый для анализа типов без создания самого множества. Синтаксис
globalIn(x, set)
Аргументы
  • x — Значение, которое нужно проверить. - set — Множество значений.
Возвращаемое значение Возвращает 1, если x содержится в множестве, иначе 0. UInt8 Примеры Базовое использование
Query
SELECT 1 IN (1, 2, 3)
Response
1

globalNotIn

Добавленный в: v1.1.0 То же, что и notIn, но использует глобальное распространение множества в распределённых запросах. Множество отправляется на все удалённые серверы. Синтаксис
globalNotIn(x, set)
Аргументы
  • x — Значение для проверки. - set — Множество значений.
Возвращаемое значение Возвращает 1, если x не входит в множество, в противном случае — 0. UInt8 Примеры Базовое использование
Query
SELECT 4 NOT IN (1, 2, 3)
Response
1

globalNotInIgnoreSet

Добавленный в: v1.1.0 То же, что и notIn, но использует глобальное распространение множества в распределённых запросах. Множество отправляется на все удалённые серверы. Это вариант IgnoreSet, используемый для анализа типов без создания множества. Синтаксис
globalNotIn(x, set)
Аргументы
  • x — Проверяемое значение. - set — Множество значений.
Возвращаемое значение Возвращает 1, если x не входит в множество, и 0 — в противном случае. UInt8 Примеры Базовое использование
Query
SELECT 4 NOT IN (1, 2, 3)
Response
1

globalNotNullIn

Добавленный в: v1.1.0 То же, что и notNullIn, но в распределённых запросах использует глобальное распределение множества. Множество отправляется на все удалённые серверы. Синтаксис
globalNotNullIn(x, set)
Аргументы
  • x — Проверяемое значение. - set — Множество значений.
Возвращаемое значение Возвращает 1, если x не входит в множество, иначе — 0. UInt8 Примеры Базовое использование
Query
SELECT notNullIn(NULL, tuple(1, NULL))
Response
0

globalNotNullInIgnoreSet

Добавленный в: v1.1.0 То же, что и notNullIn, но использует глобальное распределение множества в распределённых запросах. Множество отправляется на все удалённые серверы. Это вариант IgnoreSet, используемый для анализа типов без создания множества. Синтаксис
globalNotNullIn(x, set)
Аргументы
  • x — Проверяемое значение. - set — Множество значений.
Возвращаемое значение Возвращает 1, если x не входит в множество, в противном случае — 0. UInt8 Примеры Базовое использование
Query
SELECT notNullIn(NULL, tuple(1, NULL))
Response
0

globalNullIn

Добавленный в: v1.1.0 То же, что и nullIn, но использует глобальную дистрибуцию множества в распределённых запросах. Множество отправляется на все удалённые серверы. Синтаксис
globalNullIn(x, set)
Аргументы
  • x — Проверяемое значение. - set — Множество значений.
Возвращаемое значение Возвращает 1, если x содержится во множестве, иначе 0. UInt8 Примеры Базовое использование
Query
SELECT nullIn(NULL, tuple(1, NULL))
Response
1

globalNullInIgnoreSet

Добавленный в: v1.1.0 То же, что и nullIn, но использует глобальное распространение множества в распределённых запросах. Множество отправляется на все удалённые серверы. Это вариант IgnoreSet, используемый для анализа типов без создания множества. Синтаксис
globalNullIn(x, set)
Аргументы
  • x — Проверяемое значение. - set — Множество значений.
Возвращаемое значение Возвращает 1, если x входит в множество, иначе — 0. UInt8 Примеры Базовое использование
Query
SELECT nullIn(NULL, tuple(1, NULL))
Response
1

greater

Добавленный в: v1.1.0 Сравнивает два значения, проверяя, больше ли одно другого. Синтаксис
greater(a, b)
    -- a > b
Аргументы
  • a — Первое значение.* - b — Второе значение.*
Возвращаемое значение Возвращает 1, если a больше b, иначе — 0 UInt8 Примеры Пример использования
Query
SELECT 2 > 1, 1 > 2;
Response
┌─greater(2, 1)─┬─greater(1, 2)─┐
│             1 │             0 │
└───────────────┴───────────────┘

greaterOrEquals

Добавленный в: v1.1.0 Сравнивает два значения по условию «больше или равно». Синтаксис
greaterOrEquals(a, b)
    -- a >= b
Аргументы
  • a — Первое значение.* - b — Второе значение.*
Возвращаемое значение Возвращает 1, если a больше или равно b, и 0 в противном случае UInt8 Примеры Пример использования
Query
SELECT 2 >= 1, 2 >= 2, 1 >= 2;
Response
┌─greaterOrEquals(2, 1)─┬─greaterOrEquals(2, 2)─┬─greaterOrEquals(1, 2)─┐
│                     1 │                     1 │                     0 │
└───────────────────────┴───────────────────────┴───────────────────────┘

in

Добавленный в: v1.1.0 Проверяет, входит ли левый операнд в множество правого операнда. Возвращает 1, если входит, и 0 в противном случае. Значения NULL в левом операнде пропускаются (считаются не входящими в множество). Синтаксис
in(x, set)
Аргументы
  • x — Значение, которое нужно проверить. - set — Множество значений.
Возвращаемое значение Возвращает 1, если x содержится в множестве, иначе — 0. UInt8 Примеры Базовое использование
Query
SELECT 1 IN (1, 2, 3)
Response
1

inIgnoreSet

Добавленный в: v1.1.0 Проверяет, входит ли левый операнд в множество правого операнда. Возвращает 1, если входит, и 0 в противном случае. Значения NULL в левом операнде пропускаются (считаются не входящими в множество). Это вариант IgnoreSet, используемый для анализа типов без создания множества. Синтаксис
in(x, set)
Аргументы
  • x — Проверяемое значение. - set — Множество значений.
Возвращаемое значение Возвращает 1, если x находится во множестве, в противном случае — 0. UInt8 Примеры Базовое использование
Query
SELECT 1 IN (1, 2, 3)
Response
1

isDistinctFrom

Добавленный в: v25.11.0 Выполняет null-safe сравнение двух значений на неравенство. Возвращает true, если значения различны (не равны), в том числе когда одно значение равно NULL, а другое — нет. Возвращает false, если значения равны или оба равны NULL. Синтаксис
isDistinctFrom(x, y)
Аргументы
  • x — Первое значение для сравнения. Может иметь любой тип данных ClickHouse. Any
  • y — Второе значение для сравнения. Может иметь любой тип данных ClickHouse. Any
Возвращаемое значение Возвращает true, если два значения различаются, при этом NULL считаются сравнимыми:
  • Возвращает true, если x != y.
    • Возвращает true, если только одно из значений x или y равно NULL.
    • Возвращает false, если x = y или оба значения x и y равны NULL. Bool
Примеры Базовое использование с числами и NULL
Query
SELECT
    isDistinctFrom(1, 2) AS result_1,
    isDistinctFrom(1, 1) AS result_2,
    isDistinctFrom(NULL, 1) AS result_3,
    isDistinctFrom(NULL, NULL) AS result_4
Response
┌─result_1─┬─result_2─┬─result_3─┬─result_4─┐
│        1 │        0 │        1 │        0 │
└──────────┴──────────┴──────────┴──────────┘

isNotDistinctFrom

Добавленный в: v23.8.0 Выполняет сравнение двух значений на “равенство” с безопасной обработкой NULL. Возвращает true, если значения равны, в том числе когда оба значения — NULL. Возвращает false, если значения различаются или только одно из них равно NULL. Синтаксис
isNotDistinctFrom(x, y)
Аргументы
  • x — Первое сравниваемое значение. Может иметь любой тип данных ClickHouse. Any
  • y — Второе сравниваемое значение. Может иметь любой тип данных ClickHouse. Any
Возвращаемое значение Возвращает true, если два значения равны, при этом NULL считаются сравнимыми:
  • Возвращает true, если x = y.
    • Возвращает true, если и x, и y равны NULL.
    • Возвращает false, если x != y или только одно из значений x или y равно NULL. Bool
Примеры Базовое использование с числами и NULL
Query
SELECT
    isNotDistinctFrom(1, 1) AS result_1,
    isNotDistinctFrom(1, 2) AS result_2,
    isNotDistinctFrom(NULL, NULL) AS result_3,
    isNotDistinctFrom(NULL, 1) AS result_4
Response
┌─result_1─┬─result_2─┬─result_3─┬─result_4─┐
│        1 │        0 │        1 │        0 │
└──────────┴──────────┴──────────┴──────────┘

less

Добавленный в: v1.1.0 Сравнивает два значения, проверяя, меньше ли одно другого. Синтаксис
less(a, b)
    -- a < b
Аргументы
  • a — Первое значение.* - b — Второе значение.*
Возвращаемое значение Возвращает 1, если a меньше b, иначе — 0 UInt8 Примеры Пример использования
Query
SELECT 1 < 2, 2 < 1;
Response
┌─less(1, 2)─┬─less(2, 1)─┐
│          1 │          0 │
└────────────┴────────────┘

lessOrEquals

Добавленный в: v1.1.0 Сравнивает два значения, проверяя, меньше ли первое второго или равно ему. Синтаксис
lessOrEquals(a, b)
-- a <= b
Аргументы
  • a — Первое значение.* - b — Второе значение.*
Возвращаемое значение Возвращает 1, если a меньше либо равно b, в противном случае — 0 UInt8 Примеры Пример использования
Query
SELECT 1 <= 2, 2 <= 2, 3 <= 2;
Response
┌─lessOrEquals(1, 2)─┬─lessOrEquals(2, 2)─┬─lessOrEquals(3, 2)─┐
│                  1 │                  1 │                  0 │
└────────────────────┴────────────────────┴────────────────────┘

notEquals

Добавленный в: v1.1.0 Проверяет два значения на неравенство. Синтаксис
notEquals(a, b)
    -- a != b
    -- a <> b
Аргументы
  • a — Первое значение.* - b — Второе значение.*
Возвращаемое значение Возвращает 1, если a не равно b, и 0 в противном случае. UInt8 Примеры Пример использования
Query
SELECT 1 != 2, 1 != 1;
Response
┌─notEquals(1, 2)─┬─notEquals(1, 1)─┐
│               1 │               0 │
└─────────────────┴─────────────────┘

notIn

Добавленный в: v1.1.0 Проверяет, что левый операнд НЕ является элементом множества правого операнда. Возвращает 1, если он не входит в множество, иначе — 0. Значения NULL в левом операнде пропускаются. Синтаксис
notIn(x, set)
Аргументы
  • x — Значение для проверки. - set — Множество значений.
Возвращаемое значение Возвращает 1, если x не входит в множество, иначе — 0. UInt8 Примеры Базовое использование
Query
SELECT 4 NOT IN (1, 2, 3)
Response
1

notInIgnoreSet

Добавленный в: v1.1.0 Проверяет, не входит ли левый операнд в множество правого операнда. Возвращает 1, если не входит, и 0 — в противном случае. Значения NULL в левом операнде пропускаются. Это вариант IgnoreSet, используемый для анализа типов без создания множества. Синтаксис
notIn(x, set)
Аргументы
  • x — Значение для проверки. - set — Множество значений.
Возвращаемое значение Возвращает 1, если x не входит в множество, в противном случае — 0. UInt8 Примеры Базовое использование
Query
SELECT 4 NOT IN (1, 2, 3)
Response
1

notNullIn

Добавленный в: v1.1.0 Проверяет, что левый операнд НЕ входит в множество правого операнда. В отличие от notIn, значения NULL не пропускаются: NULL сравнивается с элементами множества, и выражение NULL = NULL дает true. Синтаксис
notNullIn(x, set)
Аргументы
  • x — Значение для проверки. - set — Множество значений.
Возвращаемое значение Возвращает 1, если x не содержится во множестве, в противном случае — 0. UInt8 Примеры Базовое использование
Query
SELECT notNullIn(NULL, tuple(1, NULL))
Response
0

notNullInIgnoreSet

Добавленный в: v1.1.0 Проверяет, что левый операнд НЕ входит в множество правого операнда. В отличие от notIn, значения NULL не пропускаются: NULL сравнивается с элементами множества, и выражение NULL = NULL дает true. Это вариант IgnoreSet, используемый для анализа типов без создания множества. Синтаксис
notNullIn(x, set)
Аргументы
  • x — Проверяемое значение. - set — Множество значений.
Возвращаемое значение Возвращает 1, если x отсутствует в множестве, иначе — 0. UInt8 Примеры Базовое использование
Query
SELECT notNullIn(NULL, tuple(1, NULL))
Response
0

nullIn

Добавленный в: v1.1.0 Проверяет, входит ли левый операнд в множество правого операнда. В отличие от in, значения NULL не пропускаются: NULL сравнивается с элементами множества, и выражение NULL = NULL дает true. Синтаксис
nullIn(x, set)
Аргументы
  • x — Проверяемое значение. - set — Набор значений.
Возвращаемое значение Возвращает 1, если x входит в набор, иначе 0. UInt8 Примеры Базовое использование
Query
SELECT nullIn(NULL, tuple(1, NULL))
Response
1

nullInIgnoreSet

Добавленный в: v1.1.0 Проверяет, входит ли левый операнд в множество правого операнда. В отличие от in, значения NULL не пропускаются: NULL сравнивается с элементами множества, и выражение NULL = NULL считается истинным. Это вариант IgnoreSet, используемый для анализа типов без создания множества. Синтаксис
nullIn(x, set)
Аргументы
  • x — Проверяемое значение. - set — Набор значений.
Возвращаемое значение Возвращает 1, если x находится в наборе, иначе 0. UInt8 Примеры Базовое использование
Query
SELECT nullIn(NULL, tuple(1, NULL))
Response
1
Последнее изменение 10 июня 2026 г.