ISNULL (Transact-SQL)

Gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalysplattformssystem (PDW)SQL-analysslutpunkt i Microsoft FabricLager i Microsoft FabricSQL-databas i Microsoft Fabric

Byter ut NULL mot det angivna ersättningsvärdet.

Transact-SQL syntaxkonventioner

Syntax

ISNULL ( check_expression , replacement_value )

Arguments

check_expression

Uttrycket som ska kontrolleras för NULL. check_expression kan vara av vilken typ som helst.

replacement_value

Uttrycket som ska returneras om check_expression är .NULL replacement_value måste vara av en typ som implicit kan konverteras till typen check_expression.

Returtyper

Returnerar samma typ som check_expression. Om en literal NULL anges som check_expression, ISNULL returnerar datatypen för replacement_value. Om en bokstavlig NULL anges som check_expression och ingen replacement_value ges, ISNULL returnerar en int.

Anmärkningar

Värdet av check_expression returneras om det inte NULLär . Annars returneras replacement_value efter att den implicit konverterats till typen check_expression, om typerna är olika. replacement_value kan förkortas om replacement_value är längre än check_expression.

Anmärkning

Använd COALESCE för att returnera det första icke-nollvärdet.

Examples

Kodexemplen i den här artikeln använder AdventureWorks2025- eller AdventureWorksDW2025-exempeldatabasen, som du kan ladda ned från startsidan Microsoft SQL Server Samples och Community Projects.

A. Använd ISNULL med AVG

Följande exempel visar medelvärdet av vikten för alla produkter. Den ersätter värdet 50 för alla NULL poster i Weight tabellens kolumn Product .

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

Här är resultatet.

59.79

B. Använd ISNULL

Följande exempel väljer beskrivning, rabattprocent, minsta kvantitet och maxmängd för alla specialerbjudanden i AdventureWorks2025. Om den maximala kvantiteten för ett visst specialerbjudande är NULL, är den MaxQty som visas i resultatmängden 0.00.

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

Här är resultatet.

Description DiscountPct MinQty Maximalt antal
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

Följande exempel använder ISNULL för att ersätta ett NULL värde för Color, med strängen None.

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

Här är en partiell resultatuppsättning.

Produkt-ID Namn Artikelnummer Färg
1 Adjustable Race AR-5381 None
2 Bearing Ball BA-8327 None
3 BB Ball Bearing BE-2349 None
4 Headset Ball Bearings BE-2908 None
316 Blade BL-2036 None
317 LL Crankarm CA-5965 Black
318 ML Crankarm CA-6738 Black
319 HL Crankarm CA-7457 Black

C. Testa för NULL i en WHERE-klausul

Använd det inte ISNULL för att hitta NULL värderingar. Använd IS NULL i stället. Följande exempel visar alla produkter som har NULL i viktkolumnen. Notera avståndet mellan IS och NULL.

USE AdventureWorks2022;
GO
SELECT Name, Weight
FROM Production.Product
WHERE Weight IS NULL;
GO

Exempel: Azure Synapse Analytics and Analytics Platform System (PDW)

D. Använd ISNULL med AVG

Följande exempel visar medelvärdet av vikten av alla produkter i en stickprovstabell. Den ersätter värdet 50 för alla NULL poster i Weight tabellens kolumn Product .

-- Uses AdventureWorksDW

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

Här är resultatet.

52.88

E. Använd ISNULL

Följande exempel används ISNULL för att testa värden NULL i kolumnen MinPaymentAmount och visa värdet 0.00 för dessa rader.

-- Uses AdventureWorks

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

Här är en partiell resultatuppsättning.

Återförsäljarnamn Minimibetalning
En cykelförening 0.0000
En cykelaffär 0.0000
En cykelbutik 0.0000
Ett stort cykelföretag 0.0000
En typisk cykelbutik 200.0000
Godkänd försäljning och service 0.0000

F. Använd IS NULL för att testa för NULL i en WHERE-klausul

Följande exempel visar alla produkter som har NULL i kolumnen Weight . Notera avståndet mellan IS och NULL.

-- Uses AdventureWorksDW

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