ISNULL (Transact-SQL)
Substitui NULL pelo valor de substituição especificado.
Sintaxe
ISNULL ( check_expression , replacement_value )
Argumentos
check_expression
É a expressão a ser verificada por NULL. check_expression pode ser de qualquer tipo.replacement_value
É a expressão a ser retornada se check_expression for NULL. replacement_value deve ser de um tipo que seja implicitamente conversível no tipo da check_expresssion.
Tipos de retorno
Retorna o mesmo tipo que check_expression.
Comentários
O valor da check_expression será retornado se não for NULL; caso contrário,, replacement_value será retornado depois de ser implicitamente convertido no tipo da check_expression, se os tipos forem diferentes.
Exemplos
A. Usando ISNULL com AVG
O exemplo a seguir localiza a média do peso de todos os produtos. Substitui o valor 50 para todas as entradas NULL na coluna Weight da tabela Product.
USE AdventureWorks2008R2;
GO
SELECT AVG(ISNULL(Weight, 50))
FROM Production.Product;
GO
Aqui está o conjunto de resultados.
--------------------------
59.79
(1 row(s) affected)
B. Usando ISNULL
O exemplo a seguir seleciona a descrição, o percentual de desconto, a quantidade mínima e a quantidade máxima para todas as ofertas especiais em AdventureWorks2008R2. Se a quantidade máxima de uma oferta especial específica for NULL, a MaxQty mostrada no conjunto de resultados será 0.00.
USE AdventureWorks2008R2;
GO
SELECT Description, DiscountPct, MinQty, ISNULL(MaxQty, 0.00) AS 'Max Quantity'
FROM Sales.SpecialOffer;
GO
Aqui está o conjunto de resultados.
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. Teste de NULL em uma cláusula WHERE
Não use ISNULL para localizar valores NULL. Em vez disso, use IS NULL. O exemplo a seguir localiza todos os produtos que têm NULL na coluna de peso. Observe o espaço entre IS e NULL.
USE AdventureWorks2008R2;
GO
SELECT Name, Weight
FROM Production.Product
WHERE Weight IS NULL;
GO