Logical functions
The functions below perform logical operations on arguments of arbitrary numeric types.
They return either 0
or 1
as UInt8
or in some cases NULL
.
Zero as an argument is considered false
, non-zero values are considered true
.
and
Introduced in: v1.1
Calculates the logical conjunction of two or more values.
Setting short_circuit_function_evaluation
controls whether short-circuit evaluation is used.
If enabled, val_i
is evaluated only if (val_1 AND val_2 AND ... AND val_{i-1})
is true
.
For example, with short-circuit evaluation, no division-by-zero exception is thrown when executing the query SELECT and(number = 2, intDiv(1, number)) FROM numbers(5)
.
Zero as an argument is considered false
, non-zero values are considered true
.
Syntax
Arguments
val1, val2[, ...]
— List of at least two values.Nullable((U)Int*)
orNullable(Float*)
Returned value
Returns:
0
, if at least one argument evaluates tofalse
NULL
, if no argument evaluates tofalse
and at least one argument isNULL
1
, otherwiseNullable(UInt8)
Examples
Basic usage
With NULL
not
Introduced in: v1.1
Calculates the logical negation of a value.
Zero as an argument is considered false
, non-zero values are considered true
.
Syntax
Arguments
Returned value
Returns:
1
, ifval
evaluates tofalse
0
, ifval
evaluates totrue
NULL
, ifval
isNULL
.Nullable(UInt8)
Examples
Basic usage
or
Introduced in: v1.1
Calculates the logical disjunction of two or more values.
Setting short_circuit_function_evaluation
controls whether short-circuit evaluation is used.
If enabled, val_i
is evaluated only if ((NOT val_1) AND (NOT val_2) AND ... AND (NOT val_{i-1}))
is true
.
For example, with short-circuit evaluation, no division-by-zero exception is thrown when executing the query SELECT or(number = 0, intDiv(1, number) != 0) FROM numbers(5)
.
Zero as an argument is considered false
, non-zero values are considered true
.
Syntax
Arguments
val1, val2[, ...]
— List of at least two values.Nullable((U)Int*)
orNullable(Float*)
Returned value
Returns:
1
, if at least one argument evaluates totrue
0
, if all arguments evaluate tofalse
NULL
, if all arguments evaluate tofalse
and at least one argument isNULL
Nullable(UInt8)
Examples
Basic usage
With NULL
xor
Introduced in: v1.1
Calculates the logical exclusive disjunction of two or more values.
For more than two input values, the function first xor-s the first two values, then xor-s the result with the third value etc.
Zero as an argument is considered false
, non-zero values are considered true
.
Syntax
Arguments
val1, val2[, ...]
— List of at least two values.Nullable((U)Int*)
orNullable(Float*)
Returned value
Returns:
1
, for two values: if one of the values evaluates tofalse
and other does not0
, for two values: if both values evaluate tofalse
or to bothtrue
NULL
, if at least one of the inputs isNULL
.Nullable(UInt8)
Examples
Basic usage