ISNULL (Transact-SQL)ISNULL (Transact-SQL)

SI APPLICA A: sìSQL Server (a partire dalla versione 2008) sìDatabase SQL di AzuresìAzure SQL Data Warehouse sìParallel Data Warehouse APPLIES TO: yesSQL Server (starting with 2008) yesAzure SQL Database yesAzure SQL Data Warehouse yesParallel Data Warehouse

Sostituisce il valore NULL con il valore di sostituzione specificato.Replaces NULL with the specified replacement value.

Icona di collegamento a un argomentoConvenzioni della sintassi Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintassiSyntax

ISNULL ( check_expression , replacement_value )  

ArgomentiArguments

check_expressioncheck_expression
Espressione da verificare per determinare se è NULL.Is the expression to be checked for NULL. check_expression può essere di qualsiasi tipo.check_expression can be of any type.

replacement_valuereplacement_value
Espressione da restituire se check_expression è NULL.Is the expression to be returned if check_expression is NULL. replacement_value deve essere di un tipo convertibile in modo implicito nel tipo di check_expression.replacement_value must be of a type that is implicitly convertible to the type of check_expression.

Tipi restituitiReturn Types

Restituisce lo stesso tipo di check_expression.Returns the same type as check_expression. Se come check_expression viene specificato un valore letterale NULL, restituisce il tipo di dati di replacement_value.If a literal NULL is provided as check_expression, returns the datatype of the replacement_value. Se come check_expression viene specificato un valore letterale NULL e non viene specificato alcun replacement_value, restituisce un valore int.If a literal NULL is provided as check_expression and no replacement_value is provided, returns an int.

RemarksRemarks

Il valore di check_expression viene restituito se non è NULL. Altrimenti viene restituito replacement_value dopo che è stato convertito in modo implicito nel tipo di check_expression, se i tipi sono diversi.The value of check_expression is returned if it is not NULL; otherwise, replacement_value is returned after it is implicitly converted to the type of check_expression, if the types are different. È possibile che replacement_value venga troncato se la lunghezza di replacement_value è maggiore di quella di check_expression.replacement_value can be truncated if replacement_value is longer than check_expression.

Nota

Usare COALESCE (Transact-SQL) per restituire il primo valore non NULL.Use COALESCE (Transact-SQL) to return the first non-null value.

EsempiExamples

A.A. Utilizzo di ISNULL con AVGUsing ISNULL with AVG

Nell'esempio seguente viene calcolato il valore medio del peso di tutti i prodotti.The following example finds the average of the weight of all products. Viene inoltre sostituito il valore 50 per tutte le voci NULL nella colonna Weight della tabella Product.It substitutes the value 50 for all NULL entries in the Weight column of the Product table.

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

Set di risultati:Here is the result set.

-------------------------- 
59.79  

(1 row(s) affected)

b.B. Utilizzo di ISNULLUsing 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.The following example selects the description, discount percentage, minimum quantity, and maximum quantity for all special offers in AdventureWorks2012. Se la quantità massima per una determinata offerta speciale è NULL, il valore di MaxQty visualizzato nel set di risultati è 0.00.If the maximum quantity for a particular special offer is NULL, the MaxQty shown in the result set is 0.00.

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

Set di risultati:Here is the result set.

DescrizioneDescription DiscountPctDiscountPct MinQtyMinQty Max QuantityMax Quantity
No DiscountNo Discount 0,000.00 00 00
Volume DiscountVolume Discount 0,020.02 1111 1414
Volume DiscountVolume Discount 0.050.05 1515 44
Volume DiscountVolume Discount 0,100.10 2525 00
Volume DiscountVolume Discount 0.150.15 4141 00
Volume DiscountVolume Discount 0,200.20 6161 00
Mountain-100 ClMountain-100 Cl 0,350.35 00 00
Sport Helmet DiSport Helmet Di 0,100.10 00 00
Road-650 OverstRoad-650 Overst 0,300.30 00 00
Mountain Tire SMountain Tire S 0,500.50 00 00
Sport Helmet DiSport Helmet Di 0.150.15 00 00
LL Road Frame SLL Road Frame S 0,350.35 00 00
Touring-3000 PrTouring-3000 Pr 0.150.15 00 00
Touring-1000 PrTouring-1000 Pr 0,200.20 00 00
Half-Price PedaHalf-Price Peda 0,500.50 00 00
Mountain-500 SiMountain-500 Si 0,400.40 00 00

(16 row(s) affected)

C.C. Verifica dei valori NULL in una clausola WHERETesting for NULL in a WHERE clause

Per trovare i valori NULL, non utilizzare ISNULL,Do not use ISNULL to find NULL values. bensì IS NULL.Use IS NULL instead. Nell'esempio seguente vengono trovati tutti i prodotti con valore NULL nella colonna relativa al peso.The following example finds all products that have NULL in the weight column. Si noti lo spazio tra IS e NULL.Note the space between IS and NULL.

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

Esempi: Azure SQL Data WarehouseAzure SQL Data Warehouse e Parallel Data WarehouseParallel Data WarehouseExamples: Azure SQL Data WarehouseAzure SQL Data Warehouse and Parallel Data WarehouseParallel Data Warehouse

D.D. Utilizzo di ISNULL con AVGUsing ISNULL with AVG

Nell'esempio seguente viene calcolato il valore medio del peso di tutti i prodotti in una tabella di esempio.The following example finds the average of the weight of all products in a sample table. Viene inoltre sostituito il valore 50 per tutte le voci NULL nella colonna Weight della tabella Product.It substitutes the value 50 for all NULL entries in the Weight column of the Product table.

-- Uses AdventureWorks  

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

Set di risultati:Here is the result set.

--------------------------   
52.88   

E.E. Utilizzo di ISNULLUsing ISNULL

Nell'esempio seguente viene usato ISNULL per verificare i valori NULL nella colonna MinPaymentAmount e visualizzare il valore 0.00 per le righe.The following example uses ISNULL to test for NULL values in the column MinPaymentAmount and display the value 0.00 for those rows.

-- Uses AdventureWorks  

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

Set di risultati parziale:Here is a partial result set.

ResellerNameResellerName MinimumPaymentMinimumPayment
A Bicycle AssociationA Bicycle Association 0,00000.0000
A Bike StoreA Bike Store 0,00000.0000
A Cycle ShopA Cycle Shop 0,00000.0000
A Great Bicycle CompanyA Great Bicycle Company 0,00000.0000
A Typical Bike ShopA Typical Bike Shop 200,0000200.0000
Acceptable Sales & ServiceAcceptable Sales & Service 0,00000.0000

F.F. Uso di IS NULL per verificare i valori NULL in una clausola WHEREUsing IS NULL to test for NULL in a WHERE clause

Nell'esempio seguente vengono trovati tutti i prodotti con valore NULL nella colonna Weight.The following example finds all products that have NULL in the Weight column. Si noti lo spazio tra IS e NULL.Note the space between IS and NULL.

-- Uses AdventureWorks  

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

Vedere ancheSee Also

Espressioni (Transact-SQL) Expressions (Transact-SQL)
IS NULL (Transact-SQL) IS NULL (Transact-SQL)
Funzioni di sistema (Transact-SQL) System Functions (Transact-SQL)
WHERE (Transact-SQL) WHERE (Transact-SQL)
COALESCE (Transact-SQL)COALESCE (Transact-SQL)