ISNULL (Transact-SQL)

Remplace NULL par la valeur de remplacement spécifiée.

Icône Lien de rubrique Conventions de la syntaxe Transact-SQL

Syntaxe

ISNULL ( check_expression , replacement_value )

Arguments

  • check_expression
    Expression dans laquelle la valeur NULL est recherchée. check_expression peut être de n'importe quel type.

  • replacement_value
    Expression à retourner si check_expression est NULL. replacement_value doit appartenir à un type implicitement convertible dans le type de check_expresssion.

Types de retour

Renvoie le même type que check_expression. Si un littéral NULL est fourni en tant que check_expression, retourne le type de données de replacement_value. Si un littéral NULL est fourni en tant que check_expression et qu'aucune replacement_value n'est fournie, retourne un type int.

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 sont différents. replacement_value peut être tronqué si replacement_value est plus long que check_expression.

[!REMARQUE]

Utilisez COALESCE (Transact-SQL) pour retourner la première valeur non Null.

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 AdventureWorks2012;
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 AdventureWorks2012. 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 AdventureWorks2012;
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 AdventureWorks2012;
GO
SELECT Name, Weight
FROM Production.Product
WHERE Weight IS NULL;
GO

Voir aussi

Référence

Expressions (Transact-SQL)

IS [NOT] NULL (Transact-SQL)

Fonctions système (Transact-SQL)

WHERE (Transact-SQL)

COALESCE (Transact-SQL)