Condividi tramite


ISNULL (Transact-SQL)

Sostituisce NULL con il valore di sostituzione specificato.

Icona di collegamento a un argomento 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

Vedere anche

Riferimento

Espressioni (Transact-SQL)

IS [NOT] NULL (Transact-SQL)

Funzioni di sistema (Transact-SQL)

WHERE (Transact-SQL)

COALESCE (Transact-SQL)