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

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

Приведённые ниже функции выполняют логические операции над аргументами произвольных числовых типов. Они возвращают либо 0, либо 1 как значение типа UInt8 или, в некоторых случаях, NULL.

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

and

Введена в: v1.1

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

Настройка 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.

Синтаксис

and(знач1, знач2[, ...])

Аргументы

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

Возвращает:

  • 0, если хотя бы один аргумент принимает значение false
  • NULL, если ни один аргумент не принимает значение false и при этом хотя бы один аргумент равен NULL
  • 1 — в остальных случаях Nullable(UInt8)

Примеры

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

SELECT and(0, 1, -2);
0

С NULL

SELECT and(NULL, 1, 10, -2);
ᴺᵁᴸᴸ

not

Добавлено в версии: v1.1

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

Синтаксис

not(val)

Аргументы

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

Возвращает:

  • 1, если val интерпретируется как false
  • 0, если val интерпретируется как true
  • NULL, если val равно NULL. Nullable(UInt8)

Примеры

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

SELECT NOT(1);
0

or

Введено в: v1.1

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

Настройка 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.

Синтаксис

or(знач1, знач2[, ...])

Аргументы

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

Возвращает:

  • 1, если хотя бы один аргумент имеет значение true
  • 0, если все аргументы имеют значение false
  • NULL, если все аргументы имеют значение false и хотя бы один аргумент равен NULL Nullable(UInt8)

Примеры

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

SELECT or(1, 0, 0, 2, NULL);
1

С NULL-значением

SELECT or(0, NULL);
ᴺᵁᴸᴸ

xor

Добавлена в: v1.1

Вычисляет логическое исключающее «или» (исключающую дизъюнкцию) для двух или более значений. При более чем двух входных значениях функция сначала применяет xor к первым двум значениям, затем — к результату и третьему значению и т.д. Ноль в качестве аргумента интерпретируется как false, ненулевые значения — как true.

Синтаксис

xor(val1, val2[, ...])

Аргументы

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

Возвращает:

  • 1 для двух значений, если одно из значений интерпретируется как false, а другое — нет
  • 0 для двух значений, если оба значения интерпретируются как false или оба как true
  • NULL, если хотя бы один из аргументов имеет значение NULL. Nullable(UInt8)

Примеры

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

SELECT xor(0, 1, 1);
0