SQL NULLFonctions


Fonctions SQL ISNULL(), NVL(), IFNULL() et COALESCE()

Regardez la table "Products" ci-dessous :

P_Id ProductName UnitPrice UnitsInStock UnitsOnOrder
1 Jarlsberg 10.45 16 15
2 Mascarpone 32.56 23
3 Gorgonzola 15.67 9 20

Supposons que "UnitsOnOrder" soit facultatif et puisse contenir des valeurs NULL.

Nous utilisons l'instruction SELECT suivante :

SELECT ProductName,UnitPrice*(UnitsInStock+UnitsOnOrder)
FROM Products

Dans l'exemple ci-dessus, si une valeur de "UnitsOnOrder" est NULL, le résultat est NULL.

La fonction ISNULL() de Microsoft est utilisée pour spécifier comment gérer les valeurs NULL.

Les fonctions NVL(), IFNULL() et COALESCE() permettent également d'obtenir le même résultat.

Ici, nous voulons que la valeur NULL soit 0.

Ci-dessous, si "UnitsOnOrder" est NULL, cela n'affectera pas le calcul, car si la valeur est NULL, ISNULL() renvoie 0 :

SQL Server / MS Access

SELECT ProductName,UnitPrice*(UnitsInStock+ISNULL(UnitsOnOrder,0))
FROM Products

Oracle

Oracle ne dispose pas d'une fonction ISNULL(). Cependant, nous pouvons utiliser la fonction NVL() pour obtenir le même résultat :

SELECT ProductName,UnitPrice*(UnitsInStock+NVL(UnitsOnOrder,0))
FROM Products

MySQL

MySQL dispose également d'une fonction similaire à ISNULL(). Cependant, elle fonctionne un peu différemment de la fonction ISNULL() de Microsoft.

Dans MySQL, nous pouvons utiliser la fonction IFNULL(), comme indiqué ci-dessous :

SELECT ProductName,UnitPrice*(UnitsInStock+IFNULL(UnitsOnOrder,0))
FROM Products

Ou nous pouvons utiliser la fonction COALESCE(), comme indiqué ci-dessous :

SELECT ProductName,UnitPrice*(UnitsInStock+COALESCE(UnitsOnOrder,0))
FROM Products

Autres extensions