Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

Fonctions logiques

Les fonctions ci-dessous effectuent des opérations logiques sur des arguments de types numériques quelconques. Elles renvoient 0 ou 1 sous forme de UInt8 ou, dans certains cas, NULL.

Un zéro passé en argument est considéré comme false, tandis que les valeurs non nulles sont considérées comme true.

and

Introduit dans : v1.1.0

Calcule la conjonction logique d’au moins deux valeurs.

Le paramètre short_circuit_function_evaluation contrôle l’utilisation de l’évaluation en court-circuit. S’il est activé, val_i n’est évalué que si (val_1 AND val_2 AND ... AND val_{i-1}) est true.

Par exemple, avec l’évaluation en court-circuit, aucune exception de division par zéro n’est levée lors de l’exécution de la requête SELECT and(number = 2, intDiv(1, number)) FROM numbers(5). Un argument égal à zéro est considéré comme false, tandis que les valeurs différentes de zéro sont considérées comme true.

Syntaxe

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

Arguments

Valeur renvoyée

Renvoie :

  • 0, si au moins un argument vaut false
  • NULL, si aucun argument ne vaut false et qu’au moins un argument est NULL
  • 1, sinon Nullable(UInt8)

Exemples

Utilisation de base

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

Avec NULL

SELECT and(NULL, 1, 10, -2);
\N

not

Introduit dans : v1.1.0

Calcule la négation logique d'une valeur. Un argument égal à zéro est considéré comme false ; les valeurs non nulles sont considérées comme true.

Syntaxe

not(val)

Arguments

Valeur renvoyée

Renvoie :

  • 1, si val est interprété comme false
  • 0, si val est interprété comme true
  • NULL, si val est NULL. Nullable(UInt8)

Exemples

Utilisation de base

SELECT NOT(1);
0

or

Introduit dans : v1.1.0

Calcule la disjonction logique d’au moins deux valeurs.

Le paramètre short_circuit_function_evaluation contrôle l’utilisation de l’évaluation en court-circuit. S’il est activé, val_i n’est évalué que si ((NOT val_1) AND (NOT val_2) AND ... AND (NOT val_{i-1})) vaut true.

Par exemple, avec l’évaluation en court-circuit, aucune exception de division par zéro n’est levée lors de l’exécution de la requête SELECT or(number = 0, intDiv(1, number) != 0) FROM numbers(5). La valeur zéro passée en argument est considérée comme false, les valeurs différentes de zéro sont considérées comme true.

Syntaxe

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

Arguments

Valeur renvoyée

Renvoie :

  • 1, si au moins un argument vaut true
  • 0, si tous les arguments valent false
  • NULL, si tous les arguments valent false et qu’au moins l’un d’eux est NULL Nullable(UInt8)

Exemples

Utilisation de base

SELECT or(1, 0, 0, 2, NULL);
1

Avec NULL

SELECT or(0, NULL);
\N

xor

Introduit dans : v1.1.0

Calcule la disjonction exclusive logique de deux valeurs ou plus. Pour plus de deux valeurs d’entrée, la fonction effectue d’abord un xor sur les deux premières valeurs, puis un xor entre le résultat et la troisième, et ainsi de suite. L’argument zéro est considéré comme false, les valeurs non nulles sont considérées comme true.

Syntaxe

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

Arguments

Valeur renvoyée

Renvoie :

  • 1, pour deux valeurs : si l’une des valeurs vaut false et l’autre non
  • 0, pour deux valeurs : si les deux valeurs valent false ou toutes deux true
  • NULL, si au moins un des arguments est NULL. Nullable(UInt8)

Exemples

Utilisation de base

SELECT xor(0, 1, 1);
0
Navigation