ISNULL (Transact-SQL)

Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure Azure Synapse Analytics PDW (Analytics Platform System) Ponto de extremidade de análise do SQL Warehouse no Microsoft Fabric

Substitui NULL pelo valor de substituição especificado.

Convenções de sintaxe de Transact-SQL

Sintaxe

ISNULL ( check_expression , replacement_value )

Argumentos

check_expression

A expressão a ser verificada .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 convertido no tipo check_expression.

Tipos de retorno

Retorna o mesmo tipo que check_expression. Se um literal NULL for fornecido como check_expression, ISNULL retornará o tipo de dados do replacement_value. Se um literal NULL for fornecido como check_expression e nenhum replacement_value for fornecido, ISNULL retornará um int.

Comentários

O valor de check_expression será retornado se não NULLfor . Caso contrário, replacement_value será retornado depois de ser convertido implicitamente para o tipo de check_expression, se os tipos forem diferentes. replacement_value poderá ser truncado se replacement_value for maior do que check_expression.

Observação

Use COALESCE para retornar o primeiro valor não nulo.

Exemplos

Os exemplos de código do Transact-SQL deste artigo usa o banco de dados de exemplo AdventureWorks2022 ou AdventureWorksDW2022, que pode ser baixado da home page Microsoft SQL Server Samples and Community Projects.

R. Usar ISNULL com o AVG

O exemplo a seguir localiza a média do peso de todos os produtos. Ele substitui o valor 50 de todas as NULL Weight entradas na coluna da Product tabela.

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

Veja a seguir o conjunto de resultados.

59.79

B. Usar 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 AdventureWorks2022. Se a quantidade máxima para uma oferta especial específica for NULL, o MaxQty mostrado no conjunto de resultados é 0.00.

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

Veja a seguir o conjunto de resultados.

Descrição DiscountPct MinQty Quantidade Máx.
No Discount 0,00 0 0
Volume Discount 11 to 14 0,02 11 14
Volume Discount 15 to 24 0,05 15 24
Volume Discount 25 to 40 0.10 25 40
Volume Discount 41 to 60 0.15 41 60
Volume Discount over 60 0,20 61 0
Mountain-100 Clearance Sale 0,35 0 0
Sport Helmet Discount-2002 0.10 0 0
Road-650 Overstock 0,30 0 0
Mountain Tire Sale 0.50 0 0
Sport Helmet Discount-2003 0.15 0 0
LL Road Frame Sale 0,35 0 0
Touring-3000 Promotion 0.15 0 0
Touring-1000 Promotion 0,20 0 0
Half-Price Pedal Sale 0.50 0 0
Mountain-500 Silver Clearance Sale 0,40 0 0

O exemplo a seguir usa ISNULL para substituir um NULL valor para Color, pela string None.

USE AdventureWorks2022;
GO
SELECT ProductID,
    Name,
    ProductNumber,
    ISNULL(Color, 'None') AS Color
FROM Production.Product;

Este é um conjunto de resultados parcial.

ProductID Nome ProductNumber Color
1 Adjustable Race AR-5381 Nenhum
2 Bearing Ball BA-8327 Nenhum
3 BB Ball Bearing BE-2349 Nenhum
4 Headset Ball Bearings BE-2908 Nenhum
316 Blade BL-2036 Nenhum
317 LL Crankarm CA-5965 Preto
318 ML Crankarm CA-6738 Preto
319 HL Crankarm CA-7457 Preto

C. Teste para NULL em uma cláusula WHERE

Não use ISNULL para encontrar NULL valores. Use o IS NULL em vez disso. 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 AdventureWorks2022;
GO
SELECT Name, Weight
FROM Production.Product
WHERE Weight IS NULL;
GO

Exemplos: Azure Synapse Analytics e PDW (Analytics Platform System)

D. Usar ISNULL com o AVG

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

-- Uses AdventureWorksDW

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

Veja a seguir o conjunto de resultados.

52.88

E. Usar ISNULL

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

-- Uses AdventureWorks

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

Este é um conjunto de resultados parcial.

ResellerName MinimumPayment
Uma Associação de Bicicletas 0,0000
Uma Loja de Bicicletas 0,0000
Uma Loja de Bike 0,0000
Uma Ótima Empresa de Bicicleta 0,0000
Uma Loja de Bicicletas Típica 200,0000
Vendas e Serviço Aceitáveis 0,0000

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

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

-- Uses AdventureWorksDW

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