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

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

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

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

and

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

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

Настройка short_circuit_function_evaluation управляет тем, используется ли укороченное (short-circuit) вычисление. Если она включена, 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(val1, val2[, ...])

Аргументы

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

Возвращает:

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

Примеры

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

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

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

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

not

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

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

Синтаксис

not(val)

Аргументы

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

Возвращает:

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

Примеры

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

SELECT NOT(1);
0

or

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

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

Настройка short_circuit_function_evaluation управляет использованием укороченной оценки выражений (short-circuit 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(val1, val2[, ...])

Аргументы

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

Возвращает:

  • 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.0

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

Синтаксис

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

Аргументы

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

Возвращает:

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

Примеры

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

SELECT xor(0, 1, 1);
0