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

> Документация по логическим функциям

# Логические функции

Перечисленные ниже функции выполняют логические операции над аргументами произвольных числовых типов.
Они возвращают либо `0`, либо `1` типа [`UInt8`](/ru/reference/data-types/int-uint), а в некоторых случаях — `NULL`.

Ноль в качестве аргумента считается `false`, а ненулевые значения — `true`.

{/*AUTOGENERATED_START*/}

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

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

Вычисляет логическую конъюнкцию двух или более значений.

Настройка [`short_circuit_function_evaluation`](/ru/reference/settings/session-settings#short_circuit_function_evaluation) определяет, используется ли укороченное вычисление.
Если она включена, `val_i` вычисляется, только если `(val_1 AND val_2 AND ... AND val_{i-1})` равно `true`.

Например, при укороченном вычислении при выполнении запроса `SELECT and(number = 2, intDiv(1, number)) FROM numbers(5)` исключение деления на ноль не генерируется.
Ноль в качестве аргумента считается `false`, ненулевые значения считаются `true`.

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

```sql theme={null}
and(val1, val2[, ...])
```

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

* `val1, val2[, ...]` — Список как минимум из двух значений. [`Nullable((U)Int*)`](/ru/reference/data-types/nullable) или [`Nullable(Float*)`](/ru/reference/data-types/nullable)

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

Возвращает:

* `0`, если хотя бы один аргумент равен `false`
* `NULL`, если ни один аргумент не равен `false` и хотя бы один аргумент равен `NULL`
* `1` в противном случае
  [`Nullable(UInt8)`](/ru/reference/data-types/nullable)

**Примеры**

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

```sql title=Query theme={null}
SELECT and(0, 1, -2);
```

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

**С NULL**

```sql title=Query theme={null}
SELECT and(NULL, 1, 10, -2);
```

```response title=Response theme={null}
ᴺᵁᴸᴸ
```

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

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

Вычисляет логическое отрицание значения.
Ноль в качестве аргумента считается `false`, а ненулевые значения — `true`.

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

```sql theme={null}
not(val)
```

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

* `val` — значение. [`(U)Int*`](/ru/reference/data-types/int-uint) или [`Float*`](/ru/reference/data-types/float)

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

Возвращает:

* `1`, если `val` интерпретируется как `false`
* `0`, если `val` интерпретируется как `true`
* `NULL`, если `val` равно `NULL`.
  [`Nullable(UInt8)`](/ru/reference/data-types/nullable)

**Примеры**

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

```sql title=Query theme={null}
SELECT NOT(1);
```

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

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

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

Вычисляет логическое ИЛИ двух или более значений.

Параметр [`short_circuit_function_evaluation`](/ru/reference/settings/session-settings#short_circuit_function_evaluation) определяет, используется ли укороченное вычисление.
Если он включен, `val_i` вычисляется только в том случае, если `((NOT val_1) AND (NOT val_2) AND ... AND (NOT val_{i-1}))` равно `true`.

Например, при укороченном вычислении при выполнении запроса `SELECT or(number = 0, intDiv(1, number) != 0) FROM numbers(5)` исключение из-за деления на ноль не генерируется.
Ноль в качестве аргумента считается `false`, а ненулевые значения — `true`.

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

```sql theme={null}
or(val1, val2[, ...])
```

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

* `val1, val2[, ...]` — Список не менее чем из двух значений. [`Nullable((U)Int*)`](/ru/reference/data-types/nullable) или [`Nullable(Float*)`](/ru/reference/data-types/nullable)

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

Возвращает:

* `1`, если хотя бы один аргумент вычисляется в `true`
* `0`, если все аргументы вычисляются в `false`
* `NULL`, если все аргументы вычисляются в `false` и хотя бы один аргумент имеет значение `NULL`
  [`Nullable(UInt8)`](/ru/reference/data-types/nullable)

**Примеры**

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

```sql title=Query theme={null}
SELECT or(1, 0, 0, 2, NULL);
```

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

**С NULL**

```sql title=Query theme={null}
SELECT or(0, NULL);
```

```response title=Response theme={null}
ᴺᵁᴸᴸ
```

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

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

Вычисляет логическое исключающее ИЛИ для двух или более значений.
Если входных значений больше двух, функция сначала применяет xor к первым двум значениям, затем — к результату и третьему значению и так далее.
Ноль в качестве аргумента считается `false`, ненулевые значения считаются `true`.

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

```sql theme={null}
xor(val1, val2[, ...])
```

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

* `val1, val2[, ...]` — Список как минимум из двух значений. [`Nullable((U)Int*)`](/ru/reference/data-types/nullable) или [`Nullable(Float*)`](/ru/reference/data-types/nullable)

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

Возвращает:

* `1`, для двух значений: если одно из значений равно `false`, а другое — нет
* `0`, для двух значений: если оба значения равны `false` или оба равны `true`
* `NULL`, если хотя бы одно из входных значений равно `NULL`.
  [`Nullable(UInt8)`](/ru/reference/data-types/nullable)

**Примеры**

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

```sql title=Query theme={null}
SELECT xor(0, 1, 1);
```

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