Sdílet prostřednictvím


ISNULL (Transact-SQL)

Platí pro:SQL ServerAzure SQL DatabaseSpravovaná instance Azure SQLAzure Synapse AnalyticsAnalytics Platform System (PDW)Koncový bod analýzy SQL v Microsoft FabricSklad v Microsoft FabricDatabáze SQL v Microsoft Fabric

Nahradí NULL se stanovenou hodnotou náhrady.

Transact-SQL konvence syntaxe

Syntaxe

ISNULL ( check_expression , replacement_value )

Arguments

check_expression

Výraz, který je třeba ověřit pro NULL. check_expression může být jakéhokoliv typu.

replacement_value

Výraz, který se má vrátit, pokud check_expression je .NULL replacement_value musí být typu, který je implicitně převoditelný na typ check_expression.

Návratové typy

Vrací stejný typ jako check_expression. Pokud je literál NULL uveden jako check_expression, ISNULL vrátí datový typ replacement_value. Pokud je literál NULL uveden jako check_expression a žádný replacement_value není uveden, vrátí ISNULLse int.

Poznámky

Hodnota check_expression se vrátí, pokud není NULL. Jinak se replacement_value vrátí poté, co je implicitně převedeno na typ check_expression, pokud jsou typy odlišné. replacement_value lze zkrátit, pokud je replacement_value delší než check_expression.

Poznámka:

Použijte COALESCE k vrácení první nenulové hodnoty.

Examples

Ukázky kódu v tomto článku používají ukázkovou databázi AdventureWorks2025 nebo AdventureWorksDW2025, kterou si můžete stáhnout z domovské stránky Microsoft SQL Serveru pro ukázky a komunitní projekty .

A. Používejte ISNULL s AVG

Následující příklad určuje průměr hmotnosti všech součinů. Nahrazuje hodnotu 50 všemi NULL položkami ve Weight sloupci tabulky Product .

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

Tady je soubor výsledků.

59.79

B. Použijte ISNULL

Následující příklad vybírá popis, procento slevy, minimální množství a maximální množství pro všechny speciální nabídky v AdventureWorks2025. Pokud je maximální množství pro konkrétní speciální nabídku , NULLzobrazené MaxQty ve výsledné množině je 0.00.

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

Tady je soubor výsledků.

Description DiscountPct MinQty Maximální množství
No Discount 0.00 0 0
Volume Discount 11 to 14 0.02 11 14
Volume Discount 15 to 24 0.05 15 dvacet čtyři
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

Následující příklad používá ISNULL nahrazení NULL hodnoty pro Color, řetězcem None.

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

Tady je částečná sada výsledků.

ProduktID Název Číslo výrobku Barva
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. Otestujte v NULL klauzuli WHERE

Nepoužívám ISNULL k hledání NULL hodnot. Místo toho použijte IS NULL. Následující příklad najde všechny součiny, které mají ve NULL sloupci váh. Všimněte si prostoru mezi IS a .NULL

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

Příklady: Azure Synapse Analytics a Analytický platformový systém (PDW)

D. Používejte ISNULL s AVG

Následující příklad najde průměr váhy všech součin v ukázkové tabulce. Nahrazuje hodnotu 50 všemi NULL položkami ve Weight sloupci tabulky Product .

-- Uses AdventureWorksDW

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

Tady je soubor výsledků.

52.88

E. Použijte ISNULL

Následující příklad slouží ISNULL k testování NULL hodnot ve sloupci MinPaymentAmount a zobrazení hodnoty 0.00 pro tyto řádky.

-- Uses AdventureWorks

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

Tady je částečná sada výsledků.

Jméno prodejce MinimumPayment
Cyklistická asociace 0.0000
Cyklistický obchod 0.0000
Cykloobchod 0.0000
Velká cyklistická společnost 0.0000
Typický cyklistický obchod 200.0000
Přijatelný prodej a servis 0.0000

F. Použijte IS NULL k testování NULL v klauzuli WHERE

Následující příklad najde všechny součiny, které mají ve sloupci NULL .Weight Všimněte si prostoru mezi IS a .NULL

-- Uses AdventureWorksDW

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