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

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

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

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

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

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

Строки сравниваются побайтно. Это может приводить к неожиданным результатам, если одна из строк содержит многобайтовые символы в кодировке UTF-8. Строка S1, которая имеет другую строку S2 в качестве префикса, считается больше строки S2.

equals

Впервые представлен в версии v1.1

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

Синтаксис

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 │
└──────────────┴──────────────┘

greater

Введён в версии: v1.1

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

Синтаксис

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

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

Синтаксис

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 │
└───────────────────────┴───────────────────────┴───────────────────────┘

isDistinctFrom

Добавлена в: v25.9

Выполняет 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

Впервые появилась в версии: v25.9

Выполняет 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

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

Синтаксис

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

Сравнивает два значения на отношение «меньше или равно».

Синтаксис

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

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

Синтаксис

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 │
└─────────────────┴─────────────────┘