> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-mintlify-8c05c8a2.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> Documentation des fonctions logiques

# 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`](/fr/reference/data-types/int-uint) 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`.

{/*AUTOGENERATED_START*/}

<div id="and">
  ## and
</div>

Introduit dans : v1.1.0

Calcule la conjonction logique d’au moins deux valeurs.

Le paramètre [`short_circuit_function_evaluation`](/fr/reference/settings/session-settings#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 non nulles sont considérées comme `true`.

**Syntaxe**

```sql theme={null}
and(val1, val2[, ...])
```

**Arguments**

* `val1, val2[, ...]` — Liste d’au moins deux valeurs. [`Nullable((U)Int*)`](/fr/reference/data-types/nullable) ou [`Nullable(Float*)`](/fr/reference/data-types/nullable)

**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)`](/fr/reference/data-types/nullable)

**Exemples**

**Utilisation de base**

```sql title=Query theme={null}
SELECT and(0, 1, -2);
```

```response title=Response theme={null}
0
```

**Avec NULL**

```sql title=Query theme={null}
SELECT and(NULL, 1, 10, -2);
```

```response title=Response theme={null}
ᴺᵁᴸᴸ
```

<div id="not">
  ## not
</div>

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**

```sql theme={null}
not(val)
```

**Arguments**

* `val` — La valeur. [`(U)Int*`](/fr/reference/data-types/int-uint) ou [`Float*`](/fr/reference/data-types/float)

**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)`](/fr/reference/data-types/nullable)

**Exemples**

**Utilisation de base**

```sql title=Query theme={null}
SELECT NOT(1);
```

```response title=Response theme={null}
0
```

<div id="or">
  ## or
</div>

Introduit dans : v1.1.0

Calcule la disjonction logique d’au moins deux valeurs.

Le paramètre [`short_circuit_function_evaluation`](/fr/reference/settings/session-settings#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**

```sql theme={null}
or(val1, val2[, ...])
```

**Arguments**

* `val1, val2[, ...]` — Liste d’au moins deux valeurs. [`Nullable((U)Int*)`](/fr/reference/data-types/nullable) ou [`Nullable(Float*)`](/fr/reference/data-types/nullable)

**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)`](/fr/reference/data-types/nullable)

**Exemples**

**Utilisation de base**

```sql title=Query theme={null}
SELECT or(1, 0, 0, 2, NULL);
```

```response title=Response theme={null}
1
```

**Avec NULL**

```sql title=Query theme={null}
SELECT or(0, NULL);
```

```response title=Response theme={null}
ᴺᵁᴸᴸ
```

<div id="xor">
  ## xor
</div>

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**

```sql theme={null}
xor(val1, val2[, ...])
```

**Arguments**

* `val1, val2[, ...]` — Liste d’au moins deux valeurs. [`Nullable((U)Int*)`](/fr/reference/data-types/nullable) ou [`Nullable(Float*)`](/fr/reference/data-types/nullable)

**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)`](/fr/reference/data-types/nullable)

**Exemples**

**Utilisation de base**

```sql title=Query theme={null}
SELECT xor(0, 1, 1);
```

```response title=Response theme={null}
0
```
