ISNULL (Transact-SQL)
Remplace NULL par la valeur de remplacement spécifiée.
Syntaxe
ISNULL ( check_expression , replacement_value )
Arguments
check_expression
Représente l'expression dans laquelle la valeur NULL est recherchée. check_expression peut être de n'importe quel type.replacement_value
Expression à renvoyer si check_expression renvoie la valeur NULL. Le type de replacement_value doit pouvoir être implicitement converti en type check_expresssion.
Types renvoyés
Renvoie le même type que check_expression.
Notes
La valeur de check_expression est renvoyée si elle est différente de NULL. Dans le cas contraire, la valeur de replacement_value est renvoyée dès lors qu'elle a été implicitement convertie en type check_expression, si leurs types étaient différents.
Exemples
A. Utilisation de ISNULL avec AVG
L'exemple suivant recherche la moyenne du poids de tous les produits. La valeur 50 se substitue à toutes les entrées NULL de la colonne Weight de la table Product.
USE AdventureWorks;
GO
SELECT AVG(ISNULL(Weight, 50))
FROM Production.Product;
GO
Voici l'ensemble des résultats.
--------------------------
59.79
(1 row(s) affected)
B. Utilisation de ISNULL
Dans l'exemple suivant, la description (« Description »), le pourcentage de remise (« DiscountPct »), la quantité minimale (« MinQty ») et la quantité maximale (« Max Quantity ») sont sélectionnés pour toutes les offres spéciales figurant dans AdventureWorks. Si la quantité maximale associée à une offre spéciale déterminée est NULL, MaxQty présente la valeur 0.00 dans l'ensemble de résultats.
USE AdventureWorks;
GO
SELECT Description, DiscountPct, MinQty, ISNULL(MaxQty, 0.00) AS 'Max Quantity'
FROM Sales.SpecialOffer;
GO
Voici l'ensemble des résultats.
Description DiscountPct MinQty Max Quantity
--------------- ------------- -------- ---------------
No Discount 0.00 0 0
Volume Discount 0.02 11 14
Volume Discount 0.05 15 4
Volume Discount 0.10 25 0
Volume Discount 0.15 41 0
Volume Discount 0.20 61 0
Mountain-100 Cl 0.35 0 0
Sport Helmet Di 0.10 0 0
Road-650 Overst 0.30 0 0
Mountain Tire S 0.50 0 0
Sport Helmet Di 0.15 0 0
LL Road Frame S 0.35 0 0
Touring-3000 Pr 0.15 0 0
Touring-1000 Pr 0.20 0 0
Half-Price Peda 0.50 0 0
Mountain-500 Si 0.40 0 0
(16 row(s) affected)
C. Test de valeur NULL dans une clause WHERE
N'utilisez pas ISNULL pour rechercher des valeurs NULL. Utilisez IS NULL à la place. L'exemple suivant recherche tous les produits qui comportent NULL dans la colonne weight. Notez l'espace entre IS et NULL.
USE AdventureWorks;
GO
SELECT Name, Weight
FROM Production.Product
WHERE Weight IS NULL;
GO