Udostępnij za pomocą


ISNULL (Transact-SQL)

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Punkt końcowy analizy SQL w usłudze Microsoft FabricHurtownia danych w usłudze Microsoft FabricBaza danych SQL w usłudze Microsoft Fabric

Zastępuje NULL się określoną wartością odtworzenia.

Transact-SQL konwencje składni

Składnia

ISNULL ( check_expression , replacement_value )

Arguments

check_expression

Wyrażenie, które należy sprawdzić dla NULL. check_expression mogą być dowolnego rodzaju.

replacement_value

Wyrażenie, które należy zwrócić, jeśli check_expression jest .NULL replacement_value musi być typu domyślnie wymienialnego na typ check_expression.

Typy zwracane

Zwraca ten sam typ co check_expression. Jeśli literal NULL jest podany jako check_expression, ISNULL zwraca typ danych replacement_value. Jeśli literal NULL jest podany jako check_expression i nie ma replacement_value , ISNULL zwraca int.

Uwagi

Wartość check_expression jest zwracana, jeśli nie NULLjest . W przeciwnym razie replacement_value zwraca się po domyślnej konwersji do typu check_expression, jeśli typy są różne. replacement_value można skrócić, jeśli replacement_value jest dłuższy niż check_expression.

Uwaga / Notatka

Użyj COALESCE, aby zwrócić pierwszą wartość niezerową.

Przykłady

Przykłady kodu w tym artykule korzystają z przykładowej bazy danych AdventureWorks2025 lub AdventureWorksDW2025, którą można pobrać ze strony głównej Przykładów programu Microsoft SQL Server i projektów społeczności.

A. Używaj ISNULL z AVG

Poniższy przykład pokazuje średnią wagi wszystkich produktów. Podstawia wartość 50 wszystkich NULL wpisów w kolumnie Weight tabeli Product .

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

Oto zestaw wyników.

59.79

B. Użyj ISNULL

Poniższy przykład wybiera opis, procent rabatu, minimalną ilość i maksymalną ilość dla wszystkich specjalnych ofert w AdventureWorks2025. Jeśli maksymalna ilość dla konkretnej oferty specjalnej wynosi NULL, pokazana MaxQty w zbiorze wyników to 0.00.

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

Oto zestaw wyników.

Description DiscountPct MinQty Maksymalna ilość
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

Poniższy przykład wykorzystuje zastąpienie ISNULLNULL wartości dla Color, na ciąg None.

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

Oto zestaw wyników częściowych.

IdentyfikatorProduktu Name Numer produktu Kolor
1 Adjustable Race AR-5381 Żaden
2 Bearing Ball BA-8327 Żaden
3 BB Ball Bearing BE-2349 Żaden
4 Headset Ball Bearings BE-2908 Żaden
316 Blade BL-2036 Żaden
317 LL Crankarm CA-5965 Czarny
318 ML Crankarm CA-6738 Czarny
319 HL Crankarm CA-7457 Czarny

C. Test dla w NULL klauzuli WHERE

Nie używaj do ISNULL wyszukiwania NULL wartości. Użyj IS NULL zamiast tego. Poniższy przykład pokazuje wszystkie iloczyny, które mają w NULL kolumnie wag. Zwróć uwagę na przestrzeń między IS a .NULL

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

Przykłady: Azure Synapse Analytics and Analytics Platform System (PDW)

D. Używaj ISNULL z AVG

Poniższy przykład pokazuje średnią wagi wszystkich produktów w tabeli próbkowej. Podstawia wartość 50 wszystkich NULL wpisów w kolumnie Weight tabeli Product .

-- Uses AdventureWorksDW

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

Oto zestaw wyników.

52.88

E. Użyj ISNULL

Poniższy przykład wykorzystuje się ISNULL do testowania NULL wartości w kolumnie MinPaymentAmount i wyświetlania wartości 0.00 dla tych wierszy.

-- Uses AdventureWorks

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

Oto zestaw wyników częściowych.

ResellerName (Nazwa odsprzedawcy) Minimalna Płatność
Stowarzyszenie rowerowe 0.0000
Sklep rowerowy 0.0000
Sklep rowerowy 0.0000
Wielka firma rowerowa 0.0000
Typowy sklep rowerowy 200.0000
Akceptowalna sprzedaż i obsługa 0.0000

F. Użyj IS NULL do testowania NULL w klauzuli WHERE

Poniższy przykład pokazuje wszystkie iloczyny, które mają w NULL kolumnie Weight . Zwróć uwagę na przestrzeń między IS a .NULL

-- Uses AdventureWorksDW

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