Логические функции
Логические функции производят логические операции над любыми числовыми типами, а возвращают число типа UInt8, равное 0, 1, а в некоторых случаях NULL.
Ноль в качестве аргумента считается ложью, а любое ненулевое значение — истиной.
and
Вычисляет результат логической конъюнкции между двумя и более значениями. Соответствует оператору логического "И".
Синтаксис
and(val1, val2...)
Чтобы вычислять функцию and по короткой схеме, используйте настройку short_circuit_function_evaluation. Если настройка включена, то выражение vali вычисляется только для строк, где условие (val1 AND val2 AND ... AND val{i-1}) верно. Например, при выполнении запроса SELECT and(number = 2, intDiv(1, number)) FROM numbers(10) не будет сгенерировано исключение из-за деления на ноль.
Аргументы
Возвращаемое значение
- 0, если среди аргументов есть хотя бы один нуль.
- NULL, если среди аргументов нет нулей, но есть хотя бы один- NULL.
- 1, в остальных случаях.
Тип: UInt8 или Nullable(UInt8).
Пример
Запрос:
SELECT and(0, 1, -2);
Результат:
┌─and(0, 1, -2)─┐
│             0 │
└───────────────┘
Со значениями NULL:
SELECT and(NULL, 1, 10, -2);
Результат:
┌─and(NULL, 1, 10, -2)─┐
│                 ᴺᵁᴸᴸ │
└──────────────────────┘
or
Вычисляет результат логической дизъюнкции между двумя и более значениями. Соответствует оператору логического "ИЛИ".
Синтаксис
or(val1, val2...)
Чтобы вычислять функцию or по короткой схеме, используйте настройку short_circuit_function_evaluation. Если настройка включена, то выражение vali вычисляется только для строк, где условие ((NOT val1) AND (NOT val2) AND ... AND (NOT val{i-1})) верно. Например, при выполнении запроса SELECT or(number = 0, intDiv(1, number) != 0) FROM numbers(10) не будет сгенерировано исключение из-за деления на ноль.
Аргументы
Returned value
- 1, если среди аргументов есть хотя бы одно ненулевое число.
- 0, если среди аргументов только нули.
- NULL, если среди аргументов нет ненулевых значений, и есть- NULL.
Тип: UInt8 или Nullable(UInt8).
Пример
Запрос:
SELECT or(1, 0, 0, 2, NULL);
Результат:
┌─or(1, 0, 0, 2, NULL)─┐
│                    1 │
└──────────────────────┘
Со значениями NULL:
SELECT or(0, NULL);
Результат:
┌─or(0, NULL)─┐
│        ᴺᵁᴸᴸ │
└─────────────┘
not
Вычисляет результат логического отрицания аргумента. Соответствует оператору логического отрицания.
Синтаксис
not(val);
Аргументы
Возвращаемое значение
- 1, если- val— это- 0.
- 0, если- val— это ненулевое число.
- NULL, если- val— это- NULL.
Тип: UInt8 или Nullable(UInt8).
Пример
Запрос:
SELECT NOT(1);
Результат:
┌─not(1)─┐
│      0 │
└────────┘
xor
Вычисляет результат логической исключающей дизъюнкции между двумя и более значениями. При более чем двух значениях функция работает так: сначала вычисляет XOR для первых двух значений, а потом использует полученный результат при вычислении XOR со следующим значением и так далее.
Синтаксис
xor(val1, val2...)
Аргументы
Returned value
- 1, для двух значений: если одно из значений является нулем, а второе нет.
- 0, для двух значений: если оба значения одновременно нули или ненулевые числа.
- NULL, если среди аргументов хотя бы один- NULL.
Тип: UInt8 or Nullable(UInt8).
Пример
Запрос:
SELECT xor(0, 1, 1);
Результат:
┌─xor(0, 1, 1)─┐
│            0 │
└──────────────┘