L’utilisation de isnull, ifnull, nullif est la suivante :
Utilisation de isnull(expr) :Si expr est nul, alors isnull() renvoie une valeur de 1, sinon elle retourne 0. mysql> select isnull(1+1) ; -> 0 mysql> select isnull(1/0) ; -> 1 Utiliser = pour les comparaisons à valeurs nulles est généralement erroné.
La fonction isnull() partage certaines des mêmes caractéristiques que l’opérateur de comparaison est nul. Voir la note sur est nulle.
Utilisation de l’IFNULL(expr1,expr2) :
Si expr1 n’est pas NULL, la valeur de retour de IFNULL() est expr1 ; Sinon, il retourne une valeur de expr2. IFNULL() renvoie soit un nombre, soit une chaîne, selon le contexte dans lequel elle est utilisée.
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'
La valeur de résultat par défaut pour IFNULL(expr1,expr2) est la plus « générique » des deux expressions, dans l’ordre STRING, REAL ou ENTIER。 Supposons une situation où une table basée sur une expression, ou MySQL, doit stocker la valeur de retour d’IFNULL() dans une table temporaire en mémoire interne : CREATE TABLE tmp SELECT IFNULL(1,'test') AS test ; Dans cet exemple, la colonne de test est de type CHAR(4).
Utilisation de NULLIF(expr1,expr2) : Si expr1 = expr2 est vrai, alors la valeur de retour est NULL, sinon la valeur de retour est expr1. C’est le même que CAS QUAND expr1 = expr2 ALORS NULL ELSE l’EXPR1 END est pareil. mysql> SELECT NULLIF(1,1) ;
-> NULL mysql> SELECT NULLIF(1,2) ; -> 1 Si les paramètres ne sont pas égaux, alors MySQL obtient la valeur expr1 deux fois.
|