ISNULL (Transact-SQL)

Si applica a: SQL Server Database SQL di Azure Istanza gestita di SQL di Azure Azure Synapse Analytics Piattaforma di strumenti analitici (PDW) Endpoint di analisi SQL in Microsoft Fabric Warehouse in Microsoft Fabric

Sostituisce NULL con il valore di sostituzione specificato.

Convenzioni relative alla sintassi Transact-SQL

Sintassi

ISNULL ( check_expression , replacement_value )

Argomenti

check_expression

Espressione da controllare per NULL. check_expression può essere di qualsiasi tipo.

replacement_value

Espressione da restituire se check_expression è NULL. replacement_value deve essere di un tipo convertibile in modo implicito nel tipo di check_expression.

Tipi restituiti

Restituisce lo stesso tipo di check_expression. Se un valore letterale NULL viene fornito come check_expression, ISNULL restituisce il tipo di dati del replacement_value. Se viene specificato un valore letterale NULL come check_expression e non viene fornito alcun replacement_value , ISNULL restituisce un valore int.

Osservazioni:

Il valore di check_expression viene restituito se non NULLè . In caso contrario, replacement_value viene restituito dopo la conversione implicita nel tipo di check_expression, se i tipi sono diversi. È possibile che replacement_value venga troncato se la lunghezza di replacement_value è maggiore di quella di check_expression.

Nota

Utilizzare COALESCE per restituire il primo valore non Null.

Esempi

Gli esempi di codice Transact-SQL in questo articolo utilizzano il database campione AdventureWorks2022 o AdventureWorksDW2022, che è possibile scaricare dalla home page di Esempi di Microsoft SQL Server e progetti collettivi.

R. Usare ISNULL con AVG

Nell'esempio seguente viene calcolato il valore medio del peso di tutti i prodotti. Sostituisce il valore 50 per tutte le NULL voci nella Weight colonna della Product tabella.

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

Il set di risultati è il seguente.

59.79

B. Usare ISNULL

Nell'esempio seguente vengono selezionate la descrizione, la percentuale di sconto, la quantità minima e la quantità massima per tutte le offerte speciali in AdventureWorks2022. Se la quantità massima per una particolare offerta speciale è NULL, l'oggetto MaxQty visualizzato nel set di risultati è 0.00.

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

Il set di risultati è il seguente.

Descrizione DiscountPct MinQty Max Quantity
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

Nell'esempio seguente viene ISNULL usato per sostituire un NULL valore per Color, con la stringa None.

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

Di seguito è riportato un set di risultati parziale.

ProductID Nome ProductNumber Color
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 Nero
318 ML Crankarm CA-6738 Nero
319 HL Crankarm CA-7457 Nero

C. Eseguire il test per NULL in una clausola WHERE

Non usare ISNULL per trovare NULL i valori. Utilizzare invece IS NULL. Nell'esempio seguente vengono trovati tutti i prodotti con valore NULL nella colonna relativa al peso. Si noti lo spazio tra IS e NULL.

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

Esempi: Azure Synapse Analytics e Piattaforma di strumenti analitici (PDW)

D. Usare ISNULL con AVG

Nell'esempio seguente viene calcolato il valore medio del peso di tutti i prodotti in una tabella di esempio. Sostituisce il valore 50 per tutte le NULL voci nella Weight colonna della Product tabella.

-- Uses AdventureWorksDW

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

Il set di risultati è il seguente.

52.88

E. Usare ISNULL

Nell'esempio seguente viene ISNULL usato per verificare NULL i valori nella colonna MinPaymentAmount e visualizzare il valore 0.00 per tali righe.

-- Uses AdventureWorks

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

Di seguito è riportato un set di risultati parziale.

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. Usare IS NULL per eseguire il test per NULL in una clausola WHERE

Nell'esempio seguente vengono trovati tutti i prodotti con valore NULL nella colonna Weight. Si noti lo spazio tra IS e NULL.

-- Uses AdventureWorksDW

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