Règles de comparaison
Les fonctions de comparaison ci-dessous renvoient 0 ou 1, de type UInt8. Seules les valeurs d'un même groupe peuvent être
comparées (par ex. UInt16 et UInt64), mais pas des valeurs appartenant à des groupes différents (par ex. UInt16 et DateTime).
Il est possible de comparer des nombres et des chaînes, ainsi que des chaînes avec des dates et des dates avec des heures.
Pour les tuples et les tableaux, la comparaison est lexicographique, ce qui signifie qu'elle est effectuée sur chaque
élément correspondant du tuple/tableau de gauche et de celui de droite.
Les types suivants peuvent être comparés :
- nombres et décimaux
- chaînes et chaînes de longueur fixe
- dates
- dates avec heures
- tuples (comparaison lexicographique)
- tableaux (comparaison lexicographique)
equals
Introduit dans : v1.1.0
Compare deux valeurs pour déterminer si elles sont égales.
Syntaxe
equals(a, b)
-- a = b
-- a == bArguments
Valeur renvoyée
Renvoie 1 si a est égal à b, sinon 0 UInt8
Exemples
Exemple d’utilisation
SELECT 1 = 1, 1 = 2;┌─equals(1, 1)─┬─equals(1, 2)─┐
│ 1 │ 0 │
└──────────────┴──────────────┘globalIn
Introduit dans : v1.1.0
Identique à in, mais utilise la distribution globale de l’ensemble dans les requêtes distribuées. L’ensemble est envoyé à tous les serveurs distants.
Syntaxe
globalIn(x, set)Arguments
x— La valeur à vérifier. -set— L’ensemble des valeurs.
Valeur renvoyée
Renvoie 1 si x appartient à l’ensemble, 0 sinon. UInt8
Exemples
Utilisation de base
SELECT 1 IN (1, 2, 3)1globalInIgnoreSet
Introduit dans : v1.1.0
Identique à in, mais utilise la distribution globale des ensembles dans les requêtes distribuées. L’ensemble est envoyé à tous les serveurs distants.
Il s’agit de la variante IgnoreSet utilisée pour l’analyse de type sans construire l’ensemble.
Syntaxe
globalIn(x, set)Arguments
x— La valeur à vérifier. -set— L'ensemble des valeurs.
Valeur renvoyée
Renvoie 1 si x appartient à l'ensemble, sinon 0. UInt8
Exemples
Utilisation de base
SELECT 1 IN (1, 2, 3)1globalNotIn
Introduit dans : v1.1.0
Identique à notIn, mais utilise le mécanisme de distribution globale des ensembles dans les requêtes distribuées. L'ensemble est envoyé à tous les serveurs distants.
Syntaxe
globalNotIn(x, set)Arguments
x— La valeur à vérifier. -set— L’ensemble des valeurs.
Valeur renvoyée
Renvoie 1 si x n’est pas dans l’ensemble, 0 sinon. UInt8
Exemples
Utilisation de base
SELECT 4 NOT IN (1, 2, 3)1globalNotInIgnoreSet
Introduit dans : v1.1.0
Identique à notIn, mais utilise la distribution globale de l’ensemble dans les requêtes distribuées. L’ensemble est envoyé à tous les serveurs distants.
Il s’agit de la variante IgnoreSet utilisée pour l’analyse de type sans créer l’ensemble.
Syntaxe
globalNotIn(x, set)Arguments
x— La valeur à vérifier. -set— L’ensemble des valeurs.
Valeur renvoyée
Renvoie 1 si x n'appartient pas à l'ensemble, 0 sinon. UInt8
Exemples
Utilisation de base
SELECT 4 NOT IN (1, 2, 3)1globalNotNullIn
Introduit dans : v1.1.0
Identique à notNullIn, mais utilise la distribution globale de l’ensemble dans les requêtes distribuées. L’ensemble est envoyé à tous les serveurs distants.
Syntaxe
globalNotNullIn(x, set)Arguments
x— La valeur à vérifier. -set— L’ensemble des valeurs.
Valeur renvoyée
Renvoie 1 si x n’est pas dans l’ensemble, 0 sinon. UInt8
Exemples
Utilisation de base
SELECT notNullIn(NULL, tuple(1, NULL))1globalNotNullInIgnoreSet
Introduit dans : v1.1.0
Identique à notNullIn, mais utilise la distribution globale de l’ensemble dans les requêtes distribuées. L’ensemble est envoyé à tous les serveurs distants.
Il s’agit de la variante IgnoreSet utilisée pour l’analyse de type, sans créer l’ensemble.
Syntaxe
globalNotNullIn(x, set)Arguments
x— La valeur à vérifier. -set— L’ensemble des valeurs.
Valeur renvoyée
Renvoie 1 si x n’appartient pas à l’ensemble, sinon 0. UInt8
Exemples
Utilisation de base
SELECT notNullIn(NULL, tuple(1, NULL))1globalNullIn
Introduit dans : v1.1.0
Identique à nullIn, mais utilise la distribution globale de l’ensemble dans les requêtes distribuées. L’ensemble est envoyé à tous les serveurs distants.
Syntaxe
globalNullIn(x, set)Arguments
x— La valeur à vérifier. -set— L’ensemble des valeurs.
Valeur renvoyée
Renvoie 1 si x appartient à l’ensemble, 0 sinon. UInt8
Exemples
Utilisation de base
SELECT nullIn(NULL, tuple(1, NULL))0globalNullInIgnoreSet
Introduit dans : v1.1.0
Identique à nullIn, mais utilise la distribution globale de l’ensemble dans les requêtes distribuées. L’ensemble est envoyé à tous les serveurs distants.
Il s'agit de la variante IgnoreSet utilisée pour l'analyse de type sans créer l’ensemble.
Syntaxe
globalNullIn(x, set)Arguments
x— La valeur à vérifier. -set— L’ensemble des valeurs.
Valeur renvoyée
Renvoie 1 si x appartient à l’ensemble, 0 sinon. UInt8
Exemples
Utilisation de base
SELECT nullIn(NULL, tuple(1, NULL))0greater
Introduit dans : v1.1.0
Compare deux valeurs afin de déterminer si l’une est supérieure à l’autre.
Syntaxe
greater(a, b)
-- a > bArguments
Valeur renvoyée
Renvoie 1 si a est supérieur à b, sinon 0 UInt8
Exemples
Exemple d'utilisation
SELECT 2 > 1, 1 > 2;┌─greater(2, 1)─┬─greater(1, 2)─┐
│ 1 │ 0 │
└───────────────┴───────────────┘greaterOrEquals
Introduit dans : v1.1.0
Compare deux valeurs pour déterminer si l’une est supérieure ou égale à l’autre.
Syntaxe
greaterOrEquals(a, b)
-- a >= bArguments
Valeur renvoyée
Renvoie 1 si a est supérieur ou égal à b, sinon 0 UInt8
Exemples
Exemple d'utilisation
SELECT 2 >= 1, 2 >= 2, 1 >= 2;┌─greaterOrEquals(2, 1)─┬─greaterOrEquals(2, 2)─┬─greaterOrEquals(1, 2)─┐
│ 1 │ 1 │ 0 │
└───────────────────────┴───────────────────────┴───────────────────────┘in
Introduit dans : v1.1.0
Vérifie si l’opérande de gauche appartient à l’ensemble de l’opérande de droite. Renvoie 1 si c’est le cas, 0 sinon. Les valeurs NULL dans l’opérande de gauche sont ignorées (considérées comme n’appartenant pas à l’ensemble).
Syntaxe
in(x, set)Arguments
x— La valeur à vérifier. -set— L’ensemble des valeurs.
Valeur renvoyée
Renvoie 1 si x appartient à l’ensemble, 0 sinon. UInt8
Exemples
Utilisation de base
SELECT 1 IN (1, 2, 3)1inIgnoreSet
Introduit dans : v1.1.0
Vérifie si l'opérande de gauche appartient à l'ensemble de l'opérande de droite. Renvoie 1 si c'est le cas, 0 sinon. Les valeurs NULL de l'opérande de gauche sont ignorées (considérées comme n'appartenant pas à l'ensemble). Il s'agit de la variante IgnoreSet utilisée pour l'analyse de type sans créer l'ensemble.
Syntaxe
in(x, set)Arguments
x— La valeur à vérifier. -set— L’ensemble des valeurs.
Valeur renvoyée
Renvoie 1 si x appartient à l’ensemble, 0 sinon. UInt8
Exemples
Utilisation de base
SELECT 1 IN (1, 2, 3)1isDistinctFrom
Introduit dans : v25.11.0
Effectue une comparaison « différent de » qui gère explicitement les valeurs NULL entre deux valeurs.
Renvoie true si les valeurs sont distinctes (non égales), y compris lorsqu'une valeur est NULL et l'autre ne l'est pas.
Renvoie false si les valeurs sont égales ou si elles sont toutes deux NULL.
Syntaxe
isDistinctFrom(x, y)Arguments
x— Première valeur à comparer. Peut être de n’importe quel type de données ClickHouse.Anyy— Deuxième valeur à comparer. Peut être de n’importe quel type de données ClickHouse.Any
Valeur renvoyée
Renvoie true si les deux valeurs sont différentes, en considérant les NULL comme comparables :
- Renvoie
truesi x != y.- Renvoie
truesi une seule des valeurs x ou y est NULL. - Renvoie
falsesi x = y, ou si x et y sont tous deux NULL.Bool
- Renvoie
Exemples
Utilisation de base avec des nombres et des NULL
SELECT
isDistinctFrom(1, 2) AS result_1,
isDistinctFrom(1, 1) AS result_2,
isDistinctFrom(NULL, 1) AS result_3,
isDistinctFrom(NULL, NULL) AS result_4┌─result_1─┬─result_2─┬─result_3─┬─result_4─┐
│ 1 │ 0 │ 1 │ 0 │
└──────────┴──────────┴──────────┴──────────┘isNotDistinctFrom
Introduit dans : v23.8.0
Effectue une comparaison d’égalité compatible avec NULL entre deux valeurs.
Renvoie true si les valeurs sont égales, y compris lorsqu’elles sont toutes deux NULL.
Renvoie false si les valeurs sont différentes, ou si une seule des deux est NULL.
Syntaxe
isNotDistinctFrom(x, y)Arguments
x— Première valeur à comparer. Peut être de n’importe quel type de données ClickHouse.Anyy— Deuxième valeur à comparer. Peut être de n’importe quel type de données ClickHouse.Any
Valeur renvoyée
Renvoie true si les deux valeurs sont égales, en considérant les valeurs NULL comme comparables :
- Renvoie
truesi x = y.- Renvoie
truesi x et y sont tous deux NULL. - Renvoie
falsesi x != y, ou si une seule de ces deux valeurs est NULL.Bool
- Renvoie
Exemples
Utilisation de base avec des nombres et des valeurs NULL
SELECT
isNotDistinctFrom(1, 1) AS result_1,
isNotDistinctFrom(1, 2) AS result_2,
isNotDistinctFrom(NULL, NULL) AS result_3,
isNotDistinctFrom(NULL, 1) AS result_4┌─result_1─┬─result_2─┬─result_3─┬─result_4─┐
│ 1 │ 0 │ 1 │ 0 │
└──────────┴──────────┴──────────┴──────────┘less
Introduit dans : v1.1.0
Compare deux valeurs selon la relation « inférieur à ».
Syntaxe
less(a, b)
-- a < bArguments
Valeur renvoyée
Renvoie 1 si a est inférieur à b, sinon 0 UInt8
Exemples
Exemple d'utilisation
SELECT 1 < 2, 2 < 1;┌─less(1, 2)─┬─less(2, 1)─┐
│ 1 │ 0 │
└────────────┴────────────┘lessOrEquals
Introduit dans : v1.1.0
Compare deux valeurs selon une relation inférieure ou égale.
Syntaxe
lessOrEquals(a, b)
-- a <= bArguments
Valeur renvoyée
Renvoie 1 si a est inférieur ou égal à b, sinon 0 UInt8
Exemples
Exemple d'utilisation
SELECT 1 <= 2, 2 <= 2, 3 <= 2;┌─lessOrEquals(1, 2)─┬─lessOrEquals(2, 2)─┬─lessOrEquals(3, 2)─┐
│ 1 │ 1 │ 0 │
└────────────────────┴────────────────────┴────────────────────┘notEquals
Introduit dans : v1.1.0
Compare deux valeurs pour déterminer si elles sont différentes.
Syntaxe
notEquals(a, b)
-- a != b
-- a <> bArguments
Valeur renvoyée
Renvoie 1 si a est différent de b, sinon 0. UInt8
Exemples
Exemple d'utilisation
SELECT 1 != 2, 1 != 1;┌─notEquals(1, 2)─┬─notEquals(1, 1)─┐
│ 1 │ 0 │
└─────────────────┴─────────────────┘notIn
Introduit dans : v1.1.0
Vérifie si l'opérande de gauche n'appartient PAS à l'ensemble de l'opérande de droite. Renvoie 1 s'il n'appartient pas à l'ensemble, 0 sinon. Les valeurs NULL de l'opérande de gauche sont ignorées.
Syntaxe
notIn(x, set)Arguments
x— La valeur à vérifier. -set— L’ensemble des valeurs.
Valeur renvoyée
Renvoie 1 si x n’est pas dans l’ensemble, sinon 0. UInt8
Exemples
Utilisation de base
SELECT 4 NOT IN (1, 2, 3)1notInIgnoreSet
Introduit dans : v1.1.0
Vérifie si l'opérande de gauche n'appartient PAS à l'ensemble de l'opérande de droite. Renvoie 1 s'il n'appartient pas à l'ensemble, 0 sinon. Les valeurs NULL dans l'opérande de gauche sont ignorées. Il s'agit de la variante IgnoreSet utilisée pour l'analyse de type sans créer l'ensemble.
Syntaxe
notIn(x, set)Arguments
x— Valeur à vérifier. -set— Ensemble de valeurs.
Valeur renvoyée
Renvoie 1 si x n’est pas dans l’ensemble, 0 sinon. UInt8
Exemples
Utilisation de base
SELECT 4 NOT IN (1, 2, 3)1notNullIn
Introduit dans : v1.1.0
Vérifie si l'opérande de gauche n'appartient PAS à l'ensemble de l'opérande de droite. Contrairement à notIn, les valeurs NULL ne sont pas ignorées : NULL est comparé aux éléments de l'ensemble, et NULL = NULL est évalué à true.
Syntaxe
notNullIn(x, set)Arguments
x— La valeur à vérifier. -set— L’ensemble des valeurs.
Valeur renvoyée
Renvoie 1 si x n’est pas dans l’ensemble, 0 sinon. UInt8
Exemples
Utilisation de base
SELECT notNullIn(NULL, tuple(1, NULL))1notNullInIgnoreSet
Introduit dans : v1.1.0
Vérifie si l’opérande de gauche n’appartient PAS à l’ensemble de l’opérande de droite. Contrairement à notIn, les valeurs NULL ne sont pas ignorées : NULL est comparé aux éléments de l’ensemble, et NULL = NULL est évalué à true.
Il s’agit de la variante IgnoreSet utilisée pour l’analyse de type sans créer l’ensemble.
Syntaxe
notNullIn(x, set)Arguments
x— La valeur à vérifier. -set— L’ensemble des valeurs.
Valeur renvoyée
Renvoie 1 si x n’appartient pas à l’ensemble, 0 sinon. UInt8
Exemples
Utilisation de base
SELECT notNullIn(NULL, tuple(1, NULL))1nullIn
Introduit dans : v1.1.0
Vérifie si l’opérande de gauche appartient à l’ensemble de l’opérande de droite. Contrairement à in, les valeurs NULL ne sont pas ignorées : NULL est comparé aux éléments de l’ensemble, et NULL = NULL est évalué à true.
Syntaxe
nullIn(x, set)Arguments
x— La valeur à vérifier. -set— L’ensemble des valeurs.
Valeur renvoyée
Renvoie 1 si x appartient à l’ensemble, 0 sinon. UInt8
Exemples
Utilisation de base
SELECT nullIn(NULL, tuple(1, NULL))0nullInIgnoreSet
Introduit dans : v1.1.0
Vérifie si l’opérande de gauche appartient à l’ensemble de l’opérande de droite. Contrairement à in, les valeurs NULL ne sont pas ignorées : NULL est comparé aux éléments de l’ensemble, et NULL = NULL est évalué à true.
Il s’agit de la variante IgnoreSet utilisée pour l’analyse de type sans créer l’ensemble.
Syntaxe
nullIn(x, set)Arguments
x— La valeur à vérifier. -set— L’ensemble des valeurs.
Valeur renvoyée
Renvoie 1 si x appartient à l’ensemble, 0 sinon. UInt8
Exemples
Utilisation de base
SELECT nullIn(NULL, tuple(1, NULL))0