Les opérateurs de comparaison

La clause WHERE est définie par une condition qui s'exprime à l'aide d'opérateurs de comparaison et d'opérateurs logiques.

Les opérateurs de comparaison sont :

A = B

A <> B (différent)

A < B

A > B

A <= B (inférieur ou égal)

A >= B (supérieur ou égal)

A BETWEEN B AND C (compris entre B et C)

A IN (B1, B2,...) : liste de valeurs, par exemple :

1
SELECT nom_comm, insee_comm, population FROM commune WHERE statut IN('Commune simple', 'Chef-lieu de canton')

A LIKE 'chaîne' : permet d'insérer des caractères jokers dans l'opération de comparaison, « % » désignant 0 à plusieurs caractères quelconques , « _ » désignant un seul caractère. Par exemple :

1
SELECT * FROM commune WHERE nom_comm LIKE 'A%'

sélectionne toutes les communes dont le nom commence par A.

1
SELECT * FROM commune WHERE nom_comm LIKE '%SAINT%'

sélectionne toutes les communes dont le nom contient la chaîne 'SAINT'.

AttentionSensibilité à la casse

SQL est sensible à la casse (majuscule / minuscule) pour les valeurs littérales, ainsi NOM_COMM LIKE '%A' est différent de NOM_COMM LIKE '%a'.

Les mots clefs SQL sont insensibles à la casse. On peut ainsi écrire SeLecT * from_ma_table, mais la convention est d'utiliser des majuscules. Quant aux noms de tables, de vues, de colonnes et de fonctions, ils sont convertis en minuscules quand il ne sont pas protégés par des guillemets.

Dans PostgreSQL mettre les noms (de colonnes, vues, tables, fonctions) entre guillemets doubles permet de préserver la casse : « ma_table » est différent de « MA_TABLE », alors que « ma_TaBle » est implicitement reconnu comme « ma_table ». Pour éviter d'avoir à protéger les noms, il est fortement recommandé de donner des noms minuscules .

Les chaînes de caractères des valeurs littérales sont entourées de guillemets simples (ex : 'SAINT %') qui est le caractère chr(39), cependant si la chaîne constante contient elle-même des apostrophes, il faut doubler celles-ci.

L'exemple ci-dessous sélectionne toutes les communes dont le nom commence par l'

1
SELECT * FROM commune WHERE nom_com LIKE 'l'' %'

RemarqueNombre ou chaîne de caractères

Les opérandes (A ou B) peuvent être des nombres ou des chaînes de caractères. Ainsi NOM_COMMUNE <> 'PARIS' est correct et sélectionne toutes les communes dont le nom n'est pas Paris

FondamentalNULL

Une valeur par défaut peut-être attribuée à une colonne lors de la définition d'une table. Si aucune valeur par défaut n'est attribuée la valeur par défaut de la colonne est positionnée à NULL (attention : le nombre « 0 » ou « espace » n'est pas équivalent à NULL !...C'est une différence importante par rapport à MapInfo).

Il est possible d'utiliser l'opérateur logique IS NULL pour tester si un champ est ou non nul.

Par exemple :

1
SELECT * FROM commune WHERE nom_comm IS NULL

récupère les enregistrement qui n'ont pas de nom de commune.

1
SELECT * FROM commune WHERE nom_comm IS NOT NULL

récupère ceux qui ont effectivement un nom (non positionné à NULL).