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

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

Функции ниже выполняют логические операции над аргументами произвольных числовых типов. Они возвращают либо 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}) истинно.

Например, с оценкой с коротким замыканием исключение деления на ноль не возникает при выполнении запроса 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

Вычесляет логическое отрицание значения. Ноль как аргумент воспринимается как 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})) истинно.

Например, с оценкой с коротким замыканием исключение деления на ноль не возникает при выполнении запроса 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

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

Синтаксис

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

Аргументы

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

Возвращает:

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

Примеры

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

SELECT xor(0, 1, 1);
0