SQL ISNULL() , NVL() , IFNULL() et COALESCE() Fonctions
Regardez ce qui suit "Products" tableau:
p_id | ProductName | Prix unitaire | Unités en stock | Unités commandées |
---|---|---|---|---|
1 | Jarlsberg | 10,45 | 16 | 15 |
2 | Mascarpone | 32.56 | 23 | |
3 | Gorgonzola | 15.67 | 9 | 20 |
Supposons que le "UnitsOnOrder" colonne est facultative, et peut contenir des valeurs NULL.
Nous avons l'instruction SELECT suivante:
SELECT ProductName,UnitPrice*(UnitsInStock+UnitsOnOrder)
FROM Products
Dans l'exemple ci - dessus, si l' un des "UnitsOnOrder" les valeurs sont NULL, le résultat est NULL.
Microsoft ISNULL() la fonction est utilisée pour spécifier la façon dont nous voulons traiter les valeurs NULL.
Le NVL() , IFNULL() et COALESCE() fonctions peuvent également être utilisés pour atteindre le même résultat.
Dans ce cas, nous voulons des valeurs NULL pour être zéro.
Ci - dessous, si "UnitsOnOrder" est NULL , il ne nuira pas le calcul, parce que ISNULL() retourne un zéro si la valeur est NULL:
MS Access
SELECT ProductName,UnitPrice*(UnitsInStock+IIF(ISNULL(UnitsOnOrder),0,UnitsOnOrder))
FROM Products
SQL Server
SELECT ProductName,UnitPrice*(UnitsInStock+ISNULL(UnitsOnOrder,0))
FROM Products
Oracle
Oracle n'a pas de ISNULL() fonction. Cependant, nous pouvons utiliser la NVL() fonction pour obtenir le même résultat:
SELECT ProductName,UnitPrice*(UnitsInStock+NVL(UnitsOnOrder,0))
FROM Products
MySQL
MySQL n'avoir un ISNULL() fonction. Cependant, cela fonctionne un peu différent de Microsoft ISNULL() fonction.
Dans MySQL , nous pouvons utiliser le IFNULL() la fonction, comme ceci:
SELECT ProductName,UnitPrice*(UnitsInStock+IFNULL(UnitsOnOrder,0))
FROM Products
ou nous pouvons utiliser le COALESCE() la fonction, comme ceci:
SELECT ProductName,UnitPrice*(UnitsInStock+COALESCE(UnitsOnOrder,0))
FROM Products