Derniers tutoriels de développement web
 

SQL Fonctions NULL


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