Перечисленные ниже функции выполняют логические операции над аргументами произвольных числовых типов.
Они возвращают либо 0, либо 1 типа UInt8, а в некоторых случаях — NULL.
Ноль в качестве аргумента считается false, а ненулевые значения — true.
and
Добавленный в: v1.1.0
Вычисляет логическую конъюнкцию двух или более значений.
Настройка 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(val1, val2[, ...])Аргументы
val1, val2[, ...]— Список как минимум из двух значений.Nullable((U)Int*)илиNullable(Float*)
Возвращаемое значение
Возвращает:
0, если хотя бы один аргумент интерпретируется какfalseNULL, если ни один аргумент не интерпретируется какfalseи хотя бы один аргумент равенNULL1в противном случаеNullable(UInt8)
Примеры
Базовое использование
SELECT and(0, 1, -2);0С NULL
SELECT and(NULL, 1, 10, -2);\Nnot
Добавленный в: v1.1.0
Вычисляет логическое отрицание значения.
Ноль в качестве аргумента считается false, а ненулевые значения — true.
Синтаксис
not(val)Аргументы
Возвращаемое значение
Возвращает:
1, еслиvalинтерпретируется какfalse0, еслиvalинтерпретируется какtrueNULL, еслиvalравноNULL.Nullable(UInt8)
Примеры
Базовое использование
SELECT NOT(1);0or
Добавленный в: v1.1.0
Вычисляет логическое ИЛИ двух или более значений.
Параметр 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(val1, val2[, ...])Аргументы
val1, val2[, ...]— Список не менее чем из двух значений.Nullable((U)Int*)илиNullable(Float*)
Возвращаемое значение
Возвращает:
1, если хотя бы один аргумент интерпретируется какtrue0, если все аргументы интерпретируются какfalseNULL, если все аргументы интерпретируются какfalseи хотя бы один аргумент имеет значениеNULLNullable(UInt8)
Примеры
Базовое использование
SELECT or(1, 0, 0, 2, NULL);1С NULL
SELECT or(0, NULL);\Nxor
Добавленный в: v1.1.0
Вычисляет логическое исключающее ИЛИ для двух или более значений.
Если входных значений больше двух, функция сначала применяет xor к первым двум значениям, затем — к результату и третьему значению и так далее.
Ноль в качестве аргумента считается false, ненулевые значения считаются true.
Синтаксис
xor(val1, val2[, ...])Аргументы
val1, val2[, ...]— Список как минимум из двух значений.Nullable((U)Int*)илиNullable(Float*)
Возвращаемое значение
Возвращает:
1, для двух значений: если одно из значений равноfalse, а другое — нет0, для двух значений: если оба значения равныfalseили оба равныtrueNULL, если хотя бы одно из входных значений равноNULL.Nullable(UInt8)
Примеры
Базовое использование
SELECT xor(0, 1, 1);0