ISNULL (Transact-SQL)
Sostituisce NULL con il valore di sostituzione specificato.
Convenzioni della sintassi Transact-SQL
Sintassi
ISNULL ( check_expression , replacement_value )
Argomenti
check_expression
Espressione da verificare per determinare se è NULL. check_expression può essere di qualsiasi tipo.replacement_value
Espressione da restituire se check_expression è NULL. replacement_value deve essere di un tipo che viene convertito in modo implicito nel tipo di check_expresssion.
Tipi restituiti
Viene restituito lo stesso tipo dell'argomento check_expression. Se un valore NULL letterale viene fornito come check_expression, viene restituito il tipo di dati del parametro replacement_value. Se un valore NULL letterale viene fornito come check_expression e non viene fornito alcun parametro replacement_value, viene restituito int.
Osservazioni
Il valore di check_expression viene restituito se non è NULL. In caso contrario, viene restituito replacement_value dopo la conversione implicita nel tipo di check_expression, se i tipi sono diversi. replacement_value può essere troncato se replacement_value è più lungo di check_expression.
[!NOTA]
Utilizzare COALESCE (Transact-SQL) per restituire il primo valore non Null.
Esempi
A.Utilizzo di ISNULL con AVG
Nell'esempio seguente viene calcolato il valore medio del peso di tutti i prodotti. Viene inoltre sostituito il valore 50 per tutte le voci NULL nella colonna Weight della tabella Product.
USE AdventureWorks2012;
GO
SELECT AVG(ISNULL(Weight, 50))
FROM Production.Product;
GO
Set di risultati:
--------------------------
59.79
(1 row(s) affected)
B.Utilizzo di 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 AdventureWorks2012. Se la quantità massima per una determinata offerta speciale è NULL, il valore di MaxQty visualizzato nel set di risultati è 0.00.
USE AdventureWorks2012;
GO
SELECT Description, DiscountPct, MinQty, ISNULL(MaxQty, 0.00) AS 'Max Quantity'
FROM Sales.SpecialOffer;
GO
Set di risultati:
Description DiscountPct MinQty Max Quantity
--------------- ------------- -------- ---------------
No Discount 0.00 0 0
Volume Discount 0.02 11 14
Volume Discount 0.05 15 4
Volume Discount 0.10 25 0
Volume Discount 0.15 41 0
Volume Discount 0.20 61 0
Mountain-100 Cl 0.35 0 0
Sport Helmet Di 0.10 0 0
Road-650 Overst 0.30 0 0
Mountain Tire S 0.50 0 0
Sport Helmet Di 0.15 0 0
LL Road Frame S 0.35 0 0
Touring-3000 Pr 0.15 0 0
Touring-1000 Pr 0.20 0 0
Half-Price Peda 0.50 0 0
Mountain-500 Si 0.40 0 0
(16 row(s) affected)
C.Verifica dei valori NULL in una clausola WHERE
Per trovare i valori NULL, non utilizzare ISNULL, bensì 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 AdventureWorks2012;
GO
SELECT Name, Weight
FROM Production.Product
WHERE Weight IS NULL;
GO