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;