Правила сравнения
Приведённые ниже функции сравнения возвращают 0 или 1 и имеют тип UInt8. Сравнивать можно только значения из одной и той же группы
(например, UInt16 и UInt64), но не из разных групп (например, UInt16 и DateTime).
Можно сравнивать числа и строки, а также строки с датами и даты со временем.
Для кортежей и массивов используется лексикографическое сравнение, то есть сравнивается каждый соответствующий
элемент кортежа/массива слева и справа.
Можно сравнивать следующие типы:
- числа и десятичные числа
- строки и строки фиксированной длины
- даты
- даты со временем
- кортежи (лексикографическое сравнение)
- массивы (лексикографическое сравнение)
equals
Добавленный в: v1.1.0
Сравнивает два значения на равенство.
Синтаксис
equals(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)1globalInIgnoreSet
Добавленный в: v1.1.0
То же, что и in, но использует глобальное распространение множества в распределенных запросах. Множество отправляется на все удаленные серверы.
Это вариант IgnoreSet, используемый для анализа типов без создания самого множества.
Синтаксис
globalIn(x, set)Аргументы
x— Значение, которое нужно проверить. -set— Множество значений.
Возвращаемое значение
Возвращает 1, если x содержится в множестве, иначе 0. UInt8
Примеры
Базовое использование
SELECT 1 IN (1, 2, 3)1globalNotIn
Добавленный в: v1.1.0
То же, что и notIn, но использует глобальное распространение множества в распределённых запросах. Множество отправляется на все удалённые серверы.
Синтаксис
globalNotIn(x, set)Аргументы
x— Значение для проверки. -set— Множество значений.
Возвращаемое значение
Возвращает 1, если x не входит в множество, в противном случае — 0. UInt8
Примеры
Базовое использование
SELECT 4 NOT IN (1, 2, 3)1globalNotInIgnoreSet
Добавленный в: v1.1.0
То же, что и notIn, но использует глобальное распространение множества в распределённых запросах. Множество отправляется на все удалённые серверы.
Это вариант IgnoreSet, используемый для анализа типов без создания множества.
Синтаксис
globalNotIn(x, set)Аргументы
x— Проверяемое значение. -set— Множество значений.
Возвращаемое значение
Возвращает 1, если x не входит в множество, и 0 — в противном случае. UInt8
Примеры
Базовое использование
SELECT 4 NOT IN (1, 2, 3)1globalNotNullIn
Добавленный в: v1.1.0
То же, что и notNullIn, но в распределённых запросах использует глобальное распространение множества. Set отправляется на все удалённые серверы.
Синтаксис
globalNotNullIn(x, set)Аргументы
x— Проверяемое значение. -set— Set значений.
Возвращаемое значение
Возвращает 1, если x не входит в Set, иначе — 0. UInt8
Примеры
Базовое использование
SELECT notNullIn(NULL, tuple(1, NULL))1globalNotNullInIgnoreSet
Добавленный в: v1.1.0
То же, что и notNullIn, но использует глобальное распространение множества в распределённых запросах. Set отправляется на все удалённые серверы.
Это вариант IgnoreSet, используемый для анализа типов без создания Set.
Синтаксис
globalNotNullIn(x, set)Аргументы
x— Проверяемое значение. -set— Set значений.
Возвращаемое значение
Возвращает 1, если x не входит в Set, в противном случае — 0. UInt8
Примеры
Базовое использование
SELECT notNullIn(NULL, tuple(1, NULL))1globalNullIn
Добавленный в: v1.1.0
То же, что и nullIn, но использует глобальное распространение множества в распределённых запросах. Set отправляется на все удалённые серверы.
Синтаксис
globalNullIn(x, set)Аргументы
x— Проверяемое значение. -set— Set значений.
Возвращаемое значение
Возвращает 1, если x содержится в Set, иначе 0. UInt8
Примеры
Базовое использование
SELECT nullIn(NULL, tuple(1, NULL))0globalNullInIgnoreSet
Добавленный в: v1.1.0
То же, что и nullIn, но использует глобальное распространение множества в распределённых запросах. Set отправляется на все удалённые серверы.
Это вариант IgnoreSet, используемый для анализа типов без создания Set.
Синтаксис
globalNullIn(x, set)Аргументы
x— Проверяемое значение. -set— Set значений.
Возвращаемое значение
Возвращает 1, если x входит в Set, иначе — 0. UInt8
Примеры
Базовое использование
SELECT nullIn(NULL, tuple(1, NULL))0greater
Добавленный в: v1.1.0
Сравнивает два значения, проверяя, больше ли одно другого.
Синтаксис
greater(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Аргументы
Возвращаемое значение
Возвращает 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)1inIgnoreSet
Добавленный в: v1.1.0
Проверяет, входит ли левый операнд в множество правого операнда. Возвращает 1, если входит, и 0 в противном случае. Значения NULL в левом операнде пропускаются (считаются не входящими в множество). Это вариант IgnoreSet, используемый для анализа типов без создания множества.
Синтаксис
in(x, set)Аргументы
x— Проверяемое значение. -set— Множество значений.
Возвращаемое значение
Возвращает 1, если x находится во множестве, в противном случае — 0. UInt8
Примеры
Базовое использование
SELECT 1 IN (1, 2, 3)1isDistinctFrom
Добавленный в: v25.11.0
Выполняет сравнение двух значений на неравенство с безопасной обработкой NULL.
Возвращает true, если значения различны (не равны), в том числе когда одно значение равно NULL, а другое — нет.
Возвращает false, если значения равны или оба равны NULL.
Синтаксис
isDistinctFrom(x, y)Аргументы
x— Первое значение для сравнения. Может иметь любой тип данных ClickHouse.Anyy— Второе значение для сравнения. Может иметь любой тип данных 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.Anyy— Второе сравниваемое значение. Может иметь любой тип данных 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Аргументы
Возвращаемое значение
Возвращает 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Аргументы
Возвращаемое значение
Возвращает 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Аргументы
Возвращаемое значение
Возвращает 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)1notInIgnoreSet
Добавленный в: v1.1.0
Проверяет, не входит ли левый операнд в множество правого операнда. Возвращает 1, если не входит, и 0 — в противном случае. Значения NULL в левом операнде пропускаются. Это вариант IgnoreSet, используемый для анализа типов без создания множества.
Синтаксис
notIn(x, set)Аргументы
x— Значение для проверки. -set— Множество значений.
Возвращаемое значение
Возвращает 1, если x не входит в множество, в противном случае — 0. UInt8
Примеры
Базовое использование
SELECT 4 NOT IN (1, 2, 3)1notNullIn
Добавленный в: 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))1notNullInIgnoreSet
Добавленный в: 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))1nullIn
Добавленный в: 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))0nullInIgnoreSet
Добавленный в: 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