Si l'argument expr1 n'est pas
          NULL, la fonction
          IFNULL() retournera l'argument
          expr1, sinon elle retournera l'argument
          expr2. La fonction
          IFNULL() retourne une valeur numérique ou
          une chaîne de caractères, suivant le contexte
          d'utilisation :
        
mysql>SELECT IFNULL(1,0);-> 1 mysql>SELECT IFNULL(NULL,10);-> 10 mysql>SELECT IFNULL(1/0,10);-> 10 mysql>SELECT IFNULL(1/0,'oui');-> 'oui'
          En version 4.0.6 et plus récent, le résultat par défaut de
          IFNULL(expr1,expr2) est le plus "général"
          des deux expressions, dans l'ordre de type
          STRING, REAL ou
          INTEGER. La différence avec les anciennes
          versions de MySQL ne seront notables que si vous créez une
          table basée sur des expressions, ou si MySQL stocke en
          interne des valeurs issues de IFNULL() dans
          une table temporaire.
        
mysql>CREATE TABLE tmp SELECT IFNULL(1,'test') AS test;mysql>DESCRIBE tmp;+-------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+--------------+------+-----+---------+-------+ | test | varbinary(4) | NO | | | | +-------+--------------+------+-----+---------+-------+
          Le type de la colonne test est
          VARBINARY(4) tandis que dans les versions
          plus anciennes, vous auriez obtenu un
          BIGINT.
        
          Si l'expression expr1 = expr2 est vrai, la
          fonction retourne NULL sinon elle retourne
          expr1. Cela revient à faire CASE
          WHEN x = y THEN NULL ELSE x END:
        
mysql>SELECT NULLIF(1,1);-> NULL mysql>SELECT NULLIF(1,2);-> 1
          Notez que l'argument expr1 est évalué
          deux fois dans MySQL si les arguments sont égaux.
        
          Si l'argument expr1 vaut TRUE
          (expr1 <> 0 et expr1
          <> NULL) alors la fonction
          IF() retourne l'argument
          expr2, sinon, elle retourne l'argument
          expr3. La fonction IF()
          retourne une valeur numérique ou une chaîne de caractères,
          suivant le contexte d'utilisation :
        
mysql>SELECT IF(1>2,2,3);-> 3 mysql>SELECT IF(1<2,'oui','non');-> 'oui' mysql>SELECT IF(STRCMP('test','test1'),'non','oui');-> 'non'
          Si l'argument expr2 ou
          expr3 est explicitement
          NULL alors le type du résultat de la
          fonction IF() est le type de la colonne non
          NULL. (Ce comportement est nouveau dans
          MySQL 4.0.3).
        
          L'argument expr1 est évalué comme un
          entier, cela signifie que si vous testez un nombre à virgule
          flottante ou une chaîne de caractères, vous devez utiliser
          une opération de comparaison :
        
mysql>SELECT IF(0.1,1,0);-> 0 mysql>SELECT IF(0.1<>0,1,0);-> 1
          Dans le premier exemple ci-dessus, IF(0.1)
          retourne 0 parce que 0.1
          est converti en une chaîne de caractères, ce qui revient à
          tester IF(0). Ce n'est certainement pas ce
          que vous désireriez. Dans le second exemple, la comparaison
          teste si le nombre à virgule flottante est différent de
          zéro. Le résultat de cette comparaison sera un entier.
        
          Le type de la fonction IF() (ce qui peut
          être important s'il est stocké dans une table temporaire)
          est calculé, dans la Version 3.23 de MySQL, comme suit :
        
| Expression | Valeur retournée | 
| expr2 ou expr3 retourne une chaîne | chaîne | 
| expr2 ou expr3 retourne un nombre à virgule | nombre à virgule | 
| expr2 ou expr3 retourne un entier | entier | 
Si expr2 et expr3 sont des chaînes de caractères, alors le résultat est insensible à la casse si les deux chaînes de caractères sont insensibles à la casse. (A partir de la version 3.23.51 de MySQL)
          
          CASE valeur WHEN [compare-value] THEN résultat [WHEN
          [compare-value] THEN résultat ...] [ELSE résultat]
          END, CASE WHEN [condition] THEN résultat
          [WHEN [condition] THEN résultat ...] [ELSE résultat]
          END
        
          La première version retourne résultat si
          valeur=compare-value. La seconde version
          retourne le résultat de la première condition qui se
          réalise. Si aucune des conditions n'est réalisé, alors le
          résultat de la clause ELSE est retourné.
          Si il n'y a pas de clause ELSE alors
          NULL est retourné :
        
mysql>SELECT CASE 1 WHEN 1 THEN "un"WHEN 2 THEN "deux" ELSE "plus" END; -> "un" mysql>SELECT CASE WHEN 1>0 THEN "vrai" ELSE "faux" END;-> "vrai" mysql>SELECT CASE BINARY "B" WHEN "a" THEN 1 WHEN "b" THEN 2 END;-> NULL
      Le type de la valeur retournée (INTEGER,
      DOUBLE ou STRING) est de
      même type que la première valeur retournée (l'expression après
      le premier THEN).
    
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.

