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 NULL
for . 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;