Passer au contenu principal
La clause WHERE vous permet de filtrer les données issues de la clause FROM de SELECT. S’il y a une clause WHERE, elle doit être suivie d’une expression de type UInt8. Les lignes pour lesquelles cette expression renvoie 0 sont exclues des transformations ultérieures ou du résultat. L’expression qui suit la clause WHERE est souvent utilisée avec des opérateurs de comparaison et des opérateurs logiques, ou avec l’une des nombreuses fonctions standard. L’expression WHERE est évaluée afin de déterminer s’il est possible d’utiliser des index et l’élagage des partitions, si le moteur de table sous-jacent le prend en charge.
PREWHEREIl existe également une optimisation de filtrage appelée PREWHERE. Prewhere est une optimisation qui permet d’appliquer le filtrage plus efficacement. Elle est activée par défaut, même si la clause PREWHERE n’est pas spécifiée explicitement.

Tester NULL

Si vous devez vérifier si une valeur est NULL, utilisez : Sinon, une expression contenant NULL ne sera jamais vraie.

Filtrer les données avec des opérateurs logiques

Vous pouvez utiliser les fonctions logiques suivantes avec la clause WHERE afin de combiner plusieurs conditions :

Utiliser des colonnes UInt8 comme condition

Dans ClickHouse, les colonnes UInt8 peuvent être utilisées directement comme conditions booléennes : 0 correspond à false et toute valeur non nulle (généralement 1) à true. Un exemple est donné dans la section ci-dessous.

Utilisation des opérateurs de comparaison

Les opérateurs de comparaison suivants peuvent être utilisés :

Recherche par motif et expressions conditionnelles

Au-delà des opérateurs de comparaison, vous pouvez utiliser la recherche par motif et les expressions conditionnelles dans la clause WHERE. Voir « Recherche par motif et expressions conditionnelles » pour des exemples d’utilisation.

Expression avec des littéraux, des colonnes ou des sous-requêtes

L’expression qui suit la clause WHERE peut également inclure des littéraux, des colonnes ou des sous-requêtes, c’est-à-dire des instructions SELECT imbriquées qui renvoient des valeurs utilisées dans des conditions. Vous pouvez combiner des littéraux, des colonnes et des sous-requêtes dans des conditions complexes :

Exemples

Tester NULL

Requêtes avec des valeurs NULL :

Filtrer les données avec des opérateurs logiques

Considérons la table et les données suivantes :
1. AND - les deux conditions doivent être vraies :
2. OR - au moins une condition doit être vraie :
3. NOT - Négation d’une condition :
4. XOR - Une et une seule condition doit être vraie (pas les deux) :
5. Combiner plusieurs opérateurs :
6. Utilisation de la syntaxe des fonctions :
La syntaxe SQL par mots-clés (AND, OR, NOT, XOR) est généralement plus lisible, mais la syntaxe des fonctions peut être utile dans des expressions complexes ou pour construire des requêtes dynamiques.

Utiliser des colonnes UInt8 comme condition

En reprenant la table de l’exemple précédent, vous pouvez utiliser directement un nom de colonne comme condition :

Utilisation des opérateurs de comparaison

Les exemples ci-dessous utilisent la table et les données de l’exemple ci-dessus. Les résultats sont omis pour des raisons de concision. 1. Égalité explicite avec true (= 1 or = true) :
2. Égalité explicite avec false (= 0 ou = false) :
3. Inégalité (!= 0 ou != false) :
4. Plus grand que :
5. Inférieur ou égal à :
6. Combinaison avec d’autres conditions :
7. Utilisation de l’opérateur IN : Dans l’exemple ci-dessous, (1, true) est un Tuple.
Vous pouvez également utiliser un array pour cela :
8. Mélange de styles de comparaison :

Recherche par motif et expressions conditionnelles

Les exemples ci-dessous utilisent la table et les données de l’exemple ci-dessus. Les résultats sont omis par souci de brièveté.

Exemples avec LIKE

Exemples d’ILIKE

Exemples de la fonction IF

Exemples de multiIf

Exemples avec CASE

CASE simple :
CASE avec conditions :
Dernière modification le 2 juillet 2026