9.2. Op�rateurs de comparaison

Les op�rateurs de comparaison habituels sont disponibles, comme l'indique Tableau 9-1.

Tableau 9-1. Op�rateurs de comparaison

Op�rateurDescription
< inf�rieur �
> sup�rieur �
<= inf�rieur ou �gal �
>= sup�rieur ou �gal �
= �gal �
<> ou != diff�rent de

Note�: L'op�rateur != est converti en <> au moment de l'analyse. Il n'est pas possible d'impl�menter les op�rateurs != et <> pour faire d'autres choses.

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.

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.

Astuce�: 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 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.