Niveau
..........
En rapport...

Intro

Saviez-vous que l'on peut mettre des IF dans une requête SQL ?
Et bien oui, on peut mettre un IF dans la clause SELECT.

Comment ça marche

Admettons que vous ayez une table “ELEVES” et quelle contienne deux champs :

  • PRESENT
  • NOM

Pour chaque eleve, vous mettrez son nom et 0 ou 1 dans la table PRESENT selon qu'il soit présent ou pas.
Si vous faites :

SQL
SELECT nom, present FROM ELEVES

Vous allez avoir ceci comme résultat :

NOM PRESENT
toto 1
jean 0
igor 0

0 ou 1 n'est pas tres parlant…. Vous pouvez donc en utilisant un IF obtenir ce résultat :

NOM PRESENT
toto absent
jean present
igor present

Pour ce faire, vous devez modifier votre requête comme suit :

SQL
SELECT nom, IF(present=0,'present','absent') FROM ELEVES

La structure

Le IF se contitue comme ceci :
IF(champs=valeur,valeur pour la condition vérifié,valeur pour la condition fause)

Dans certain cas, vous voudrez par exemple remplacer la valeur si la condition est vérifié sinon on garde la valeur d'origine.
Dans ce cas, vous mettez simple le nom du champs.
ex : IF(champs=valeur,valeur pour la condition vérifié,champs)

A noter aussi, l'opérateur = ultisé pour l'exemple n'est pas figé, on peut utiliser n'importe quel opérateur SQL.

Le IFNULL

Si vous voulez attribuer une valeur au champs NULL lors de la requette, vous pouvez utilser le IFNULL.
Sa structure est la suivante : IFNULL(champ,valeur a mettre)
Exemple :

SQL
SELECT IFNULL(nom,'Anonyme'), IF(present=0,'present','absent') FROM ELEVES

Aura pour effet de mettre à anonyme tous les enregistrements qui n'ont pas de nom.

Oracle ne connais pas la fonction IFNULL, en revanche, son équivalent est NVL

iDo 24/11/2005 13:56