ISNULL (Transact-SQL)

 

Publicado: dezembro de 2016

ESTE TÓPICO APLICA-SE A: simSQL Server (começando com o 2008)simBanco de Dados SQL do AzuresimAzure SQL Data Warehouse simParallel Data Warehouse

Substitui NULL pelo valor de substituição especificado.

Topic link icon Convenções de sintaxe Transact-SQL

-- Syntax for SQL Server, Azure SQL Database, Azure SQL Data Warehouse, Parallel Data Warehouse  
  
ISNULL ( check_expression , replacement_value )  

check_expression
É o 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 é NULL. replacement_value deve ser de um tipo que é implicitamente conversível para o tipo de check_expresssion.

Retorna o mesmo tipo check_expression. Se um literal nulo é fornecido como check_expression, retorna o tipo de dados de replacement_value. Se um literal nulo é fornecido como check_expression e não replacement_value for fornecido, retornará uma int.

O valor de check_expression será retornado se não for NULL; caso contrário, replacement_value é retornado depois que ele é convertido implicitamente no tipo de check_expression, se os tipos forem diferentes. replacement_value pode ser truncada se replacement_value for maior do que check_expression.

System_CAPS_ICON_note.jpg Observação


Use ADESÃO (Transact-SQL) para retornar o primeiro valor não nulo.

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  

D. Usando ISNULL com AVG

O exemplo a seguir encontra a média do peso de todos os produtos em uma tabela de exemplo. Substitui o valor 50 para todas as entradas NULL na coluna Weight da tabela Product.

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

Aqui está o conjunto de resultados.

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

E. Usando ISNULL

O exemplo a seguir usa ISNULL para testar valores nulos na coluna MinPaymentAmount e exibir o valor 0.00 para essas linhas.

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

Este é um conjunto de resultados parcial.

ResellerName MinimumPayment

------------------------- --------------

A Bicycle Association 0.0000

A Bike Store 0.0000

A Cycle Shop 0.0000

A Great Bicycle Company 0.0000

A Typical Bike Shop 200.0000

Acceptable Sales & Service 0.0000

F. Usando IS NULL para testar o NULL em uma cláusula WHERE

O exemplo a seguir localiza todos os produtos que têm NULL no Weight coluna. Observe o espaço entre IS e NULL.

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

Expressões (Transact-SQL)
É nulo (Transact-SQL)
Funções de sistema (Transact-SQL)
ONDE (Transact-SQL)
UNIÃO (Transact-SQL)

Contribuições da comunidade

ADICIONAR
Mostrar: