Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

Функции сравнения

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

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

Можно сравнивать следующие типы:

  • числа и десятичные числа
  • строки и строки фиксированной длины
  • даты
  • даты со временем
  • кортежи (лексикографическое сравнение)
  • массивы (лексикографическое сравнение)

equals

Добавленный в: v1.1.0

Сравнивает два значения на равенство.

Синтаксис

equals(a, b)
        -- a = b
        -- a == b

Аргументы

  • a — Первое значение.* - b — Второе значение.*

Возвращаемое значение

Возвращает 1, если a равно b, иначе — 0 UInt8

Примеры

Пример использования

SELECT 1 = 1, 1 = 2;
┌─equals(1, 1)─┬─equals(1, 2)─┐
│            1 │            0 │
└──────────────┴──────────────┘

globalIn

Добавленный в: v1.1.0

То же, что и in, но использует глобальное распределение множества в распределённых запросах. Множество отправляется на все удалённые серверы.

Синтаксис

globalIn(x, set)

Аргументы

  • x — Значение, которое нужно проверить. - set — Множество значений.

Возвращаемое значение

Возвращает 1, если x входит в множество, в противном случае — 0. UInt8

Примеры

Базовое использование

SELECT 1 IN (1, 2, 3)
1

globalInIgnoreSet

Добавленный в: v1.1.0

То же, что и in, но использует глобальное распространение множества в распределенных запросах. Множество отправляется на все удаленные серверы. Это вариант IgnoreSet, используемый для анализа типов без создания самого множества.

Синтаксис

globalIn(x, set)

Аргументы

  • x — Значение, которое нужно проверить. - set — Множество значений.

Возвращаемое значение

Возвращает 1, если x содержится в множестве, иначе 0. UInt8

Примеры

Базовое использование

SELECT 1 IN (1, 2, 3)
1

globalNotIn

Добавленный в: v1.1.0

То же, что и notIn, но использует глобальное распространение множества в распределённых запросах. Множество отправляется на все удалённые серверы.

Синтаксис

globalNotIn(x, set)

Аргументы

  • x — Значение для проверки. - set — Множество значений.

Возвращаемое значение

Возвращает 1, если x не входит в множество, в противном случае — 0. UInt8

Примеры

Базовое использование

SELECT 4 NOT IN (1, 2, 3)
1

globalNotInIgnoreSet

Добавленный в: v1.1.0

То же, что и notIn, но использует глобальное распространение множества в распределённых запросах. Множество отправляется на все удалённые серверы. Это вариант IgnoreSet, используемый для анализа типов без создания множества.

Синтаксис

globalNotIn(x, set)

Аргументы

  • x — Проверяемое значение. - set — Множество значений.

Возвращаемое значение

Возвращает 1, если x не входит в множество, и 0 — в противном случае. UInt8

Примеры

Базовое использование

SELECT 4 NOT IN (1, 2, 3)
1

globalNotNullIn

Добавленный в: v1.1.0

То же, что и notNullIn, но в распределённых запросах использует глобальное распространение множества. Set отправляется на все удалённые серверы.

Синтаксис

globalNotNullIn(x, set)

Аргументы

  • x — Проверяемое значение. - set — Set значений.

Возвращаемое значение

Возвращает 1, если x не входит в Set, иначе — 0. UInt8

Примеры

Базовое использование

SELECT notNullIn(NULL, tuple(1, NULL))
1

globalNotNullInIgnoreSet

Добавленный в: v1.1.0

То же, что и notNullIn, но использует глобальное распространение множества в распределённых запросах. Set отправляется на все удалённые серверы. Это вариант IgnoreSet, используемый для анализа типов без создания Set.

Синтаксис

globalNotNullIn(x, set)

Аргументы

  • x — Проверяемое значение. - set — Set значений.

Возвращаемое значение

Возвращает 1, если x не входит в Set, в противном случае — 0. UInt8

Примеры

Базовое использование

SELECT notNullIn(NULL, tuple(1, NULL))
1

globalNullIn

Добавленный в: v1.1.0

То же, что и nullIn, но использует глобальное распространение множества в распределённых запросах. Set отправляется на все удалённые серверы.

Синтаксис

globalNullIn(x, set)

Аргументы

  • x — Проверяемое значение. - set — Set значений.

Возвращаемое значение

Возвращает 1, если x содержится в Set, иначе 0. UInt8

Примеры

Базовое использование

SELECT nullIn(NULL, tuple(1, NULL))
0

globalNullInIgnoreSet

Добавленный в: v1.1.0

То же, что и nullIn, но использует глобальное распространение множества в распределённых запросах. Set отправляется на все удалённые серверы. Это вариант IgnoreSet, используемый для анализа типов без создания Set.

Синтаксис

globalNullIn(x, set)

Аргументы

  • x — Проверяемое значение. - set — Set значений.

Возвращаемое значение

Возвращает 1, если x входит в Set, иначе — 0. UInt8

Примеры

Базовое использование

SELECT nullIn(NULL, tuple(1, NULL))
0

greater

Добавленный в: v1.1.0

Сравнивает два значения, проверяя, больше ли одно другого.

Синтаксис

greater(a, b)
    -- a > b

Аргументы

  • a — Первое значение.* - b — Второе значение.*

Возвращаемое значение

Возвращает 1, если a больше b, иначе — 0 UInt8

Примеры

Пример использования

SELECT 2 > 1, 1 > 2;
┌─greater(2, 1)─┬─greater(1, 2)─┐
│             1 │             0 │
└───────────────┴───────────────┘

greaterOrEquals

Добавленный в: v1.1.0

Сравнивает два значения по условию «больше или равно».

Синтаксис

greaterOrEquals(a, b)
    -- a >= b

Аргументы

  • a — Первое значение.* - b — Второе значение.*

Возвращаемое значение

Возвращает 1, если a больше или равно b, и 0 в противном случае UInt8

Примеры

Пример использования

SELECT 2 >= 1, 2 >= 2, 1 >= 2;
┌─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

Примеры

Базовое использование

SELECT 1 IN (1, 2, 3)
1

inIgnoreSet

Добавленный в: v1.1.0

Проверяет, входит ли левый операнд в множество правого операнда. Возвращает 1, если входит, и 0 в противном случае. Значения NULL в левом операнде пропускаются (считаются не входящими в множество). Это вариант IgnoreSet, используемый для анализа типов без создания множества.

Синтаксис

in(x, set)

Аргументы

  • x — Проверяемое значение. - set — Множество значений.

Возвращаемое значение

Возвращает 1, если x находится во множестве, в противном случае — 0. UInt8

Примеры

Базовое использование

SELECT 1 IN (1, 2, 3)
1

isDistinctFrom

Добавленный в: v25.11.0

Выполняет сравнение двух значений на неравенство с безопасной обработкой NULL. Возвращает 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

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
┌─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

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
┌─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

Примеры

Пример использования

SELECT 1 < 2, 2 < 1;
┌─less(1, 2)─┬─less(2, 1)─┐
│          1 │          0 │
└────────────┴────────────┘

lessOrEquals

Добавленный в: v1.1.0

Сравнивает два значения, проверяя, меньше ли первое второго или равно ему.

Синтаксис

lessOrEquals(a, b)
-- a <= b

Аргументы

  • a — Первое значение.* - b — Второе значение.*

Возвращаемое значение

Возвращает 1, если a меньше либо равно b, в противном случае — 0 UInt8

Примеры

Пример использования

SELECT 1 <= 2, 2 <= 2, 3 <= 2;
┌─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

Примеры

Пример использования

SELECT 1 != 2, 1 != 1;
┌─notEquals(1, 2)─┬─notEquals(1, 1)─┐
│               1 │               0 │
└─────────────────┴─────────────────┘

notIn

Добавленный в: v1.1.0

Проверяет, что левый операнд НЕ является элементом множества правого операнда. Возвращает 1, если он не входит в множество, иначе — 0. Значения NULL в левом операнде пропускаются.

Синтаксис

notIn(x, set)

Аргументы

  • x — Значение для проверки. - set — Множество значений.

Возвращаемое значение

Возвращает 1, если x не входит в множество, иначе — 0. UInt8

Примеры

Базовое использование

SELECT 4 NOT IN (1, 2, 3)
1

notInIgnoreSet

Добавленный в: v1.1.0

Проверяет, не входит ли левый операнд в множество правого операнда. Возвращает 1, если не входит, и 0 — в противном случае. Значения NULL в левом операнде пропускаются. Это вариант IgnoreSet, используемый для анализа типов без создания множества.

Синтаксис

notIn(x, set)

Аргументы

  • x — Значение для проверки. - set — Множество значений.

Возвращаемое значение

Возвращает 1, если x не входит в множество, в противном случае — 0. UInt8

Примеры

Базовое использование

SELECT 4 NOT IN (1, 2, 3)
1

notNullIn

Добавленный в: v1.1.0

Проверяет, что левый операнд НЕ входит в Set правого операнда. В отличие от notIn, значения NULL не пропускаются: NULL сравнивается с элементами Set, и выражение NULL = NULL дает true.

Синтаксис

notNullIn(x, set)

Аргументы

  • x — Значение для проверки. - set — Set значений.

Возвращаемое значение

Возвращает 1, если x не содержится в Set, в противном случае — 0. UInt8

Примеры

Базовое использование

SELECT notNullIn(NULL, tuple(1, NULL))
1

notNullInIgnoreSet

Добавленный в: v1.1.0

Проверяет, что левый операнд НЕ входит в Set правого операнда. В отличие от notIn, значения NULL не пропускаются: NULL сравнивается с элементами Set, и выражение NULL = NULL дает true. Это вариант IgnoreSet, используемый для анализа типов без создания Set.

Синтаксис

notNullIn(x, set)

Аргументы

  • x — Проверяемое значение. - set — Set значений.

Возвращаемое значение

Возвращает 1, если x отсутствует в Set, иначе — 0. UInt8

Примеры

Базовое использование

SELECT notNullIn(NULL, tuple(1, NULL))
1

nullIn

Добавленный в: v1.1.0

Проверяет, входит ли левый операнд в Set правого операнда. В отличие от in, значения NULL не пропускаются: NULL сравнивается с элементами Set, и выражение NULL = NULL дает true.

Синтаксис

nullIn(x, set)

Аргументы

  • x — Проверяемое значение. - set — Set значений.

Возвращаемое значение

Возвращает 1, если x входит в Set, иначе 0. UInt8

Примеры

Базовое использование

SELECT nullIn(NULL, tuple(1, NULL))
0

nullInIgnoreSet

Добавленный в: v1.1.0

Проверяет, входит ли левый операнд в Set правого операнда. В отличие от in, значения NULL не пропускаются: NULL сравнивается с элементами Set, и выражение NULL = NULL считается истинным. Это вариант IgnoreSet, используемый для анализа типов без создания Set.

Синтаксис

nullIn(x, set)

Аргументы

  • x — Проверяемое значение. - set — Set значений.

Возвращаемое значение

Возвращает 1, если x находится в Set, иначе 0. UInt8

Примеры

Базовое использование

SELECT nullIn(NULL, tuple(1, NULL))
0
Navigation