> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-fix-nav-issues.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> Документация по функциям сравнения

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

<div id="comparison-rules">
  ## Правила сравнения
</div>

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

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

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

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

{/*AUTOGENERATED_START*/}

<div id="equals">
  ## equals
</div>

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

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

**Синтаксис**

```sql theme={null}
equals(a, b)
        -- a = b
        -- a == b
```

**Аргументы**

* `a` — Первое значение.<sup>[\*](#comparison-rules)</sup> - `b` — Второе значение.<sup>[\*](#comparison-rules)</sup>

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

Возвращает `1`, если `a` равно `b`, иначе — `0` [`UInt8`](/ru/reference/data-types/int-uint)

**Примеры**

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

```sql title=Query theme={null}
SELECT 1 = 1, 1 = 2;
```

```response title=Response theme={null}
┌─equals(1, 1)─┬─equals(1, 2)─┐
│            1 │            0 │
└──────────────┴──────────────┘
```

<div id="globalIn">
  ## globalIn
</div>

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

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

**Синтаксис**

```sql theme={null}
globalIn(x, set)
```

**Аргументы**

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

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

Возвращает 1, если `x` входит в множество, в противном случае — 0. [`UInt8`](/ru/reference/data-types/int-uint)

**Примеры**

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

```sql title=Query theme={null}
SELECT 1 IN (1, 2, 3)
```

```response title=Response theme={null}
1
```

<div id="globalInIgnoreSet">
  ## globalInIgnoreSet
</div>

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

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

**Синтаксис**

```sql theme={null}
globalIn(x, set)
```

**Аргументы**

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

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

Возвращает 1, если x содержится в множестве, иначе 0. [`UInt8`](/ru/reference/data-types/int-uint)

**Примеры**

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

```sql title=Query theme={null}
SELECT 1 IN (1, 2, 3)
```

```response title=Response theme={null}
1
```

<div id="globalNotIn">
  ## globalNotIn
</div>

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

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

**Синтаксис**

```sql theme={null}
globalNotIn(x, set)
```

**Аргументы**

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

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

Возвращает 1, если x не входит в множество, в противном случае — 0. [`UInt8`](/ru/reference/data-types/int-uint)

**Примеры**

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

```sql title=Query theme={null}
SELECT 4 NOT IN (1, 2, 3)
```

```response title=Response theme={null}
1
```

<div id="globalNotInIgnoreSet">
  ## globalNotInIgnoreSet
</div>

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

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

**Синтаксис**

```sql theme={null}
globalNotIn(x, set)
```

**Аргументы**

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

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

Возвращает 1, если x не входит в множество, и 0 — в противном случае. [`UInt8`](/ru/reference/data-types/int-uint)

**Примеры**

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

```sql title=Query theme={null}
SELECT 4 NOT IN (1, 2, 3)
```

```response title=Response theme={null}
1
```

<div id="globalNotNullIn">
  ## globalNotNullIn
</div>

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

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

**Синтаксис**

```sql theme={null}
globalNotNullIn(x, set)
```

**Аргументы**

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

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

Возвращает 1, если x не входит в множество, иначе — 0. [`UInt8`](/ru/reference/data-types/int-uint)

**Примеры**

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

```sql title=Query theme={null}
SELECT notNullIn(NULL, tuple(1, NULL))
```

```response title=Response theme={null}
0
```

<div id="globalNotNullInIgnoreSet">
  ## globalNotNullInIgnoreSet
</div>

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

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

**Синтаксис**

```sql theme={null}
globalNotNullIn(x, set)
```

**Аргументы**

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

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

Возвращает 1, если x не входит в множество, в противном случае — 0. [`UInt8`](/ru/reference/data-types/int-uint)

**Примеры**

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

```sql title=Query theme={null}
SELECT notNullIn(NULL, tuple(1, NULL))
```

```response title=Response theme={null}
0
```

<div id="globalNullIn">
  ## globalNullIn
</div>

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

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

**Синтаксис**

```sql theme={null}
globalNullIn(x, set)
```

**Аргументы**

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

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

Возвращает 1, если x содержится во множестве, иначе 0. [`UInt8`](/ru/reference/data-types/int-uint)

**Примеры**

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

```sql title=Query theme={null}
SELECT nullIn(NULL, tuple(1, NULL))
```

```response title=Response theme={null}
1
```

<div id="globalNullInIgnoreSet">
  ## globalNullInIgnoreSet
</div>

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

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

**Синтаксис**

```sql theme={null}
globalNullIn(x, set)
```

**Аргументы**

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

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

Возвращает 1, если x входит в множество, иначе — 0. [`UInt8`](/ru/reference/data-types/int-uint)

**Примеры**

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

```sql title=Query theme={null}
SELECT nullIn(NULL, tuple(1, NULL))
```

```response title=Response theme={null}
1
```

<div id="greater">
  ## greater
</div>

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

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

**Синтаксис**

```sql theme={null}
greater(a, b)
    -- a > b
```

**Аргументы**

* `a` — Первое значение.<sup>[\*](#comparison-rules)</sup> - `b` — Второе значение.<sup>[\*](#comparison-rules)</sup>

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

Возвращает `1`, если `a` больше `b`, иначе — `0` [`UInt8`](/ru/reference/data-types/int-uint)

**Примеры**

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

```sql title=Query theme={null}
SELECT 2 > 1, 1 > 2;
```

```response title=Response theme={null}
┌─greater(2, 1)─┬─greater(1, 2)─┐
│             1 │             0 │
└───────────────┴───────────────┘
```

<div id="greaterOrEquals">
  ## greaterOrEquals
</div>

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

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

**Синтаксис**

```sql theme={null}
greaterOrEquals(a, b)
    -- a >= b
```

**Аргументы**

* `a` — Первое значение.<sup>[\*](#comparison-rules)</sup> - `b` — Второе значение.<sup>[\*](#comparison-rules)</sup>

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

Возвращает `1`, если `a` больше или равно `b`, и `0` в противном случае [`UInt8`](/ru/reference/data-types/int-uint)

**Примеры**

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

```sql title=Query theme={null}
SELECT 2 >= 1, 2 >= 2, 1 >= 2;
```

```response title=Response theme={null}
┌─greaterOrEquals(2, 1)─┬─greaterOrEquals(2, 2)─┬─greaterOrEquals(1, 2)─┐
│                     1 │                     1 │                     0 │
└───────────────────────┴───────────────────────┴───────────────────────┘
```

<div id="in">
  ## in
</div>

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

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

**Синтаксис**

```sql theme={null}
in(x, set)
```

**Аргументы**

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

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

Возвращает 1, если `x` содержится в множестве, иначе — 0. [`UInt8`](/ru/reference/data-types/int-uint)

**Примеры**

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

```sql title=Query theme={null}
SELECT 1 IN (1, 2, 3)
```

```response title=Response theme={null}
1
```

<div id="inIgnoreSet">
  ## inIgnoreSet
</div>

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

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

**Синтаксис**

```sql theme={null}
in(x, set)
```

**Аргументы**

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

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

Возвращает 1, если x находится во множестве, в противном случае — 0. [`UInt8`](/ru/reference/data-types/int-uint)

**Примеры**

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

```sql title=Query theme={null}
SELECT 1 IN (1, 2, 3)
```

```response title=Response theme={null}
1
```

<div id="isDistinctFrom">
  ## isDistinctFrom
</div>

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

Выполняет null-safe сравнение двух значений на неравенство.
Возвращает `true`, если значения различны (не равны), в том числе когда одно значение равно NULL, а другое — нет.
Возвращает `false`, если значения равны или оба равны NULL.

**Синтаксис**

```sql theme={null}
isDistinctFrom(x, y)
```

**Аргументы**

* `x` — Первое значение для сравнения. Может иметь любой тип данных ClickHouse. [`Any`](/ru/reference/data-types)
* `y` — Второе значение для сравнения. Может иметь любой тип данных ClickHouse. [`Any`](/ru/reference/data-types)

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

Возвращает `true`, если два значения различаются, при этом NULL считаются сравнимыми:

* Возвращает `true`, если x != y.
  * Возвращает `true`, если только одно из значений x или y равно NULL.
  * Возвращает `false`, если x = y или оба значения x и y равны NULL. [`Bool`](/ru/reference/data-types/boolean)

**Примеры**

**Базовое использование с числами и NULL**

```sql title=Query theme={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
```

```response title=Response theme={null}
┌─result_1─┬─result_2─┬─result_3─┬─result_4─┐
│        1 │        0 │        1 │        0 │
└──────────┴──────────┴──────────┴──────────┘
```

<div id="isNotDistinctFrom">
  ## isNotDistinctFrom
</div>

Добавленный в: v23.8.0

Выполняет сравнение двух значений на "равенство" с безопасной обработкой NULL.
Возвращает `true`, если значения равны, в том числе когда оба значения — NULL.
Возвращает `false`, если значения различаются или только одно из них равно NULL.

**Синтаксис**

```sql theme={null}
isNotDistinctFrom(x, y)
```

**Аргументы**

* `x` — Первое сравниваемое значение. Может иметь любой тип данных ClickHouse. [`Any`](/ru/reference/data-types)
* `y` — Второе сравниваемое значение. Может иметь любой тип данных ClickHouse. [`Any`](/ru/reference/data-types)

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

Возвращает `true`, если два значения равны, при этом NULL считаются сравнимыми:

* Возвращает `true`, если x = y.
  * Возвращает `true`, если и x, и y равны NULL.
  * Возвращает `false`, если x != y или только одно из значений x или y равно NULL. [`Bool`](/ru/reference/data-types/boolean)

**Примеры**

**Базовое использование с числами и NULL**

```sql title=Query theme={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
```

```response title=Response theme={null}
┌─result_1─┬─result_2─┬─result_3─┬─result_4─┐
│        1 │        0 │        1 │        0 │
└──────────┴──────────┴──────────┴──────────┘
```

<div id="less">
  ## less
</div>

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

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

**Синтаксис**

```sql theme={null}
less(a, b)
    -- a < b
```

**Аргументы**

* `a` — Первое значение.<sup>[\*](#comparison-rules)</sup> - `b` — Второе значение.<sup>[\*](#comparison-rules)</sup>

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

Возвращает `1`, если `a` меньше `b`, иначе — `0` [`UInt8`](/ru/reference/data-types/int-uint)

**Примеры**

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

```sql title=Query theme={null}
SELECT 1 < 2, 2 < 1;
```

```response title=Response theme={null}
┌─less(1, 2)─┬─less(2, 1)─┐
│          1 │          0 │
└────────────┴────────────┘
```

<div id="lessOrEquals">
  ## lessOrEquals
</div>

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

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

**Синтаксис**

```sql theme={null}
lessOrEquals(a, b)
-- a <= b
```

**Аргументы**

* `a` — Первое значение.<sup>[\*](#comparison-rules)</sup> - `b` — Второе значение.<sup>[\*](#comparison-rules)</sup>

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

Возвращает `1`, если `a` меньше либо равно `b`, в противном случае — `0` [`UInt8`](/ru/reference/data-types/int-uint)

**Примеры**

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

```sql title=Query theme={null}
SELECT 1 <= 2, 2 <= 2, 3 <= 2;
```

```response title=Response theme={null}
┌─lessOrEquals(1, 2)─┬─lessOrEquals(2, 2)─┬─lessOrEquals(3, 2)─┐
│                  1 │                  1 │                  0 │
└────────────────────┴────────────────────┴────────────────────┘
```

<div id="notEquals">
  ## notEquals
</div>

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

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

**Синтаксис**

```sql theme={null}
notEquals(a, b)
    -- a != b
    -- a <> b
```

**Аргументы**

* `a` — Первое значение.<sup>[\*](#comparison-rules)</sup> - `b` — Второе значение.<sup>[\*](#comparison-rules)</sup>

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

Возвращает `1`, если `a` не равно `b`, и `0` в противном случае. [`UInt8`](/ru/reference/data-types/int-uint)

**Примеры**

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

```sql title=Query theme={null}
SELECT 1 != 2, 1 != 1;
```

```response title=Response theme={null}
┌─notEquals(1, 2)─┬─notEquals(1, 1)─┐
│               1 │               0 │
└─────────────────┴─────────────────┘
```

<div id="notIn">
  ## notIn
</div>

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

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

**Синтаксис**

```sql theme={null}
notIn(x, set)
```

**Аргументы**

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

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

Возвращает 1, если `x` не входит в множество, иначе — 0. [`UInt8`](/ru/reference/data-types/int-uint)

**Примеры**

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

```sql title=Query theme={null}
SELECT 4 NOT IN (1, 2, 3)
```

```response title=Response theme={null}
1
```

<div id="notInIgnoreSet">
  ## notInIgnoreSet
</div>

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

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

**Синтаксис**

```sql theme={null}
notIn(x, set)
```

**Аргументы**

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

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

Возвращает 1, если x не входит в множество, в противном случае — 0. [`UInt8`](/ru/reference/data-types/int-uint)

**Примеры**

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

```sql title=Query theme={null}
SELECT 4 NOT IN (1, 2, 3)
```

```response title=Response theme={null}
1
```

<div id="notNullIn">
  ## notNullIn
</div>

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

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

**Синтаксис**

```sql theme={null}
notNullIn(x, set)
```

**Аргументы**

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

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

Возвращает 1, если x не содержится во множестве, в противном случае — 0. [`UInt8`](/ru/reference/data-types/int-uint)

**Примеры**

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

```sql title=Query theme={null}
SELECT notNullIn(NULL, tuple(1, NULL))
```

```response title=Response theme={null}
0
```

<div id="notNullInIgnoreSet">
  ## notNullInIgnoreSet
</div>

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

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

**Синтаксис**

```sql theme={null}
notNullIn(x, set)
```

**Аргументы**

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

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

Возвращает 1, если x отсутствует в множестве, иначе — 0. [`UInt8`](/ru/reference/data-types/int-uint)

**Примеры**

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

```sql title=Query theme={null}
SELECT notNullIn(NULL, tuple(1, NULL))
```

```response title=Response theme={null}
0
```

<div id="nullIn">
  ## nullIn
</div>

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

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

**Синтаксис**

```sql theme={null}
nullIn(x, set)
```

**Аргументы**

* `x` — Проверяемое значение. - `set` — Набор значений.

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

Возвращает 1, если x входит в набор, иначе 0. [`UInt8`](/ru/reference/data-types/int-uint)

**Примеры**

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

```sql title=Query theme={null}
SELECT nullIn(NULL, tuple(1, NULL))
```

```response title=Response theme={null}
1
```

<div id="nullInIgnoreSet">
  ## nullInIgnoreSet
</div>

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

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

**Синтаксис**

```sql theme={null}
nullIn(x, set)
```

**Аргументы**

* `x` — Проверяемое значение. - `set` — Набор значений.

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

Возвращает 1, если `x` находится в наборе, иначе 0. [`UInt8`](/ru/reference/data-types/int-uint)

**Примеры**

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

```sql title=Query theme={null}
SELECT nullIn(NULL, tuple(1, NULL))
```

```response title=Response theme={null}
1
```
