Documentation PostgreSQL 8.1.23 > Langage SQL > Fonctions et opérateurs > Opérateurs de comparaison | |
Fonctions et opérateurs | Fonctions et opérateurs mathématiques |
Les opérateurs de comparaison habituels sont disponibles, comme l'indique le Tableau 9.1, « Opérateurs de comparaison ».
Tableau 9.1. Opérateurs de comparaison
Opérateur | Description |
---|---|
< | inférieur à |
> | supérieur à |
<= | inférieur ou égal à |
>= | supérieur ou égal à |
= | égal à |
<> ou != | différent de |
L'opérateur != est converti en <> au moment de l'analyse. Il n'est pas possible d'implémenter des opérateurs != et <> réalisant des opérations différentes.
Les opérateurs de comparaison sont disponibles pour tous les types de données où cela a un sens. Tous les opérateurs de comparaison sont des opérateurs binaires renvoyant des valeurs du type boolean ; des expressions comme 1 < 2 < 3 ne sont pas valides (car il n'existe pas d'opérateur < pour comparer une valeur booléenne avec 3).
En plus des opérateurs de comparaison, la construction spéciale BETWEEN est disponible.
a BETWEEN x AND y
est équivalent à
a >= x AND a <= y
De même,
a NOT BETWEEN x AND y
est équivalent à
a < x OR a > y
Il n'y a pas de différence entre les deux formes respectives si ce n'est les cycles CPU requis pour ré-écrire en interne la première sous la forme de la seconde. BETWEEN SYMMETRIC est identique à BETWEEN sauf qu'il n'est pas nécessaire que l'argument à gauche de AND soit plus petit ou égal à l'argument à sa droite ; la bonne échelle de valeurs est déterminée automatiquement.
Pour vérifier si une valeur est NULL ou non, utilisez les constructions
expression IS NULL expression IS NOT NULL
ou la construction équivalente, non standard,
expression ISNULL expression NOTNULL
N'écrivez pas expression = NULL parce que NULL n'est pas « égal à » NULL (la valeur NULL représente une valeur inconnue et il est impossible de dire si deux valeurs inconnues sont égales). Ce comportement est conforme au standard SQL.
Quelques applications pourraient s'attendre à ce que expression = NULL renvoie true si expression s'évalue comme la valeur NULL. Il est chaudement recommandé que ces applications soient modifiées pour se conformer au standard SQL. Néanmoins, si cela ne peut pas être fait, le paramètre de configuration transform_null_equals est disponible. S'il est activé, PostgreSQL™ convertira les clauses x = NULL en x IS NULL. C'était le comportement par défaut dans les versions 6.5 à 7.1 de PostgreSQL™.
Un opérateur standard de comparaison renvoie NULL (signifiant « inconnu ») si une des entrées est NULL. Une autre façon de comparer est d'utiliser la syntaxe IS DISTINCT FROM :
expression IS DISTINCT FROM expression
Pour des entrées différentes de NULL, le résultat est le même que celui obtenu par l'opérateur <>. Cependant, si les deux entrées sont NULL, alors cela retourne faux et si une des deux entrées est NULL, alors cela retourne vrai. Dans ce cas-là, NULL n'est plus considéré comme un état de l'expression mais comme la valeur de l'expression.
Les valeurs booléennes peuvent aussi être testées en utilisant les constructions
expression IS TRUE expression IS NOT TRUE expression IS FALSE expression IS NOT FALSE expression IS UNKNOWN expression IS NOT UNKNOWN
Elles renverront toujours true ou false, jamais une valeur NULL, même si l'opérande est NULL. Une entrée NULL est traitée comme la valeur logique « inconnue ». Notez que IS UNKNOWN et IS NOT UNKNOWN sont réellement identiques à IS NULL et IS NOT NULL, respectivement, sauf que l'expression en entrée doit être de type booléen.