ISNULL (Transact-SQL)
Substitui NULL pelo valor de substituição especificado.
Convenções da sintaxe Transact-SQL
Sintaxe
ISNULL ( check_expression , replacement_value )
Argumentos
check_expression
É a expressão a ser verificada para 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 de dados implicitamente conversível no tipo de check_expresssion.
Tipos de retorno
Retorna o mesmo tipo que check_expression. Se um NULL literal for fornecido como check_expression, retornará o tipo de dados do replacement_value. Se um NULL literal for fornecido como check_expression e nenhum replacement_value for fornecido, retornará um int.
Comentários
O valor da check_expression será retornado se não for NULL; caso contrário, replacement_value será retornado após ser implicitamente convertido no tipo da check_expression, se os tipos forem diferentes. replacement_value poderá ser truncado se replacement_value for mais longo que check_expression.
Observação |
---|
Use COALESCE (Transact-SQL) para retornar o primeiro valor não nulo. |
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 AdventureWorks2012;
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 AdventureWorks2012. Se a quantidade máxima de uma oferta especial específica for NULL, a MaxQty mostrada no conjunto de resultados será 0.00.
USE AdventureWorks2012;
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.Testando 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 AdventureWorks2012;
GO
SELECT Name, Weight
FROM Production.Product
WHERE Weight IS NULL;
GO