ISNULL (Transact-SQL)

S’applique à : SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW) SQL analytics endpoint in Microsoft Fabric Warehouse in Microsoft Fabric

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

Conventions de la syntaxe Transact-SQL

Syntaxe

ISNULL ( check_expression , replacement_value )

Arguments

check_expression

Expression à rechercher NULL. check_expression peut être de n’importe quel type.

replacement_value

Expression à renvoyer si check_expression est NULL. replacement_value doit être d’un type pouvant être implicitement converti vers le type de check_expression.

Types de retour

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

Notes

La valeur de check_expression est retournée si ce n’est pas le cas NULL. Sinon, replacement_value est retournée une fois qu’elle est implicitement convertie en type de check_expression, si les types sont différents. replacement_value peut être tronqué si replacement_value dépasse check_expression.

Remarque

Utilisez COALESCE pour retourner la première valeur non null.

Exemples

Les exemples de code Transact-SQL de cet article sont fondés sur l’échantillon de base de données AdventureWorks2022 ou AdventureWorksDW2022 fourni, que vous pouvez télécharger à partir de la page d’accueil Échantillons et projets communautaires Microsoft SQL Server.

R : Utiliser ISNULL avec AVG

L'exemple suivant recherche la moyenne du poids de tous les produits. Elle remplace la valeur 50 de toutes les NULL entrées de la Weight colonne de la Product table.

USE AdventureWorks2022;
GO
SELECT AVG(ISNULL(Weight, 50))
FROM Production.Product;
GO

Voici le jeu de résultats.

59.79

B. Utiliser 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 AdventureWorks2022. Si la quantité maximale pour une offre spéciale particulière est NULL, l’affichage MaxQty dans le jeu de résultats est 0.00.

USE AdventureWorks2022;
GO
SELECT Description, DiscountPct, MinQty, ISNULL(MaxQty, 0.00) AS 'Max Quantity'
FROM Sales.SpecialOffer;
GO

Voici le jeu de résultats.

Description DiscountPct MinQty Quantité maximale
No Discount 0.00 0 0
Volume Discount 11 to 14 0,02 11 14
Volume Discount 15 to 24 0.05 15 24
Volume Discount 25 to 40 0.10 25 40
Volume Discount 41 to 60 0.15 41 60
Volume Discount over 60 0.20 61 0
Mountain-100 Clearance Sale 0,35 0 0
Sport Helmet Discount-2002 0.10 0 0
Road-650 Overstock 0.30 0 0
Mountain Tire Sale 0.50 0 0
Sport Helmet Discount-2003 0.15 0 0
LL Road Frame Sale 0,35 0 0
Touring-3000 Promotion 0.15 0 0
Touring-1000 Promotion 0.20 0 0
Half-Price Pedal Sale 0.50 0 0
Mountain-500 Silver Clearance Sale 0,40 0 0

L’exemple suivant utilise ISNULL pour remplacer une NULL valeur pour Color, par la chaîne None.

USE AdventureWorks2022;
GO
SELECT ProductID,
    Name,
    ProductNumber,
    ISNULL(Color, 'None') AS Color
FROM Production.Product;

Voici un jeu de résultats partiel.

ProductID Nom RéférenceProduit Couleur
1 Adjustable Race AR-5381 Aucune
2 Bearing Ball BA-8327 Aucune
3 BB Ball Bearing BE-2349 Aucune
4 Headset Ball Bearings BE-2908 Aucune
316 Blade BL-2036 Aucune
317 LL Crankarm CA-5965 Noir
318 ML Crankarm CA-6738 Noir
319 HL Crankarm CA-7457 Noir

C. Tester dans NULL une clause WHERE

N’utilisez ISNULL pas pour rechercher NULL des valeurs. 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 AdventureWorks2022;
GO
SELECT Name, Weight
FROM Production.Product
WHERE Weight IS NULL;
GO

Exemples : Azure Synapse Analytics et Analytics Platform System (PDW)

D. Utiliser ISNULL avec AVG

L’exemple suivant recherche la moyenne du poids de tous les produits dans un exemple de table. Elle remplace la valeur 50 de toutes les NULL entrées de la Weight colonne de la Product table.

-- Uses AdventureWorksDW

SELECT AVG(ISNULL(Weight, 50))
FROM dbo.DimProduct;

Voici le jeu de résultats.

52.88

E. Utiliser ISNULL

L’exemple suivant utilise ISNULL pour tester les NULL valeurs dans la colonne MinPaymentAmount et afficher la valeur 0.00 de ces lignes.

-- Uses AdventureWorks

SELECT ResellerName,
       ISNULL(MinPaymentAmount,0) AS MinimumPayment
FROM dbo.DimReseller
ORDER BY ResellerName;

Voici un jeu de résultats partiel.

ResellerName MinimumPayment
A Bicycle Association 0,0000
A Bike Store 0,0000
A Cycle Shop 0,0000
A Great Bicycle Company 0,0000
A Typical Bike Shop 200,0000
Acceptable Sales & Service 0,0000

F. Utiliser IS NULL pour tester NULL dans une clause WHERE

L’exemple suivant recherche tous les produits qui comportent NULL dans la colonne Weight. Notez l'espace entre IS et NULL.

-- Uses AdventureWorksDW

SELECT EnglishProductName, Weight
FROM dbo.DimProduct
WHERE Weight IS NULL;