Partilhar via


ISNULL (Transact-SQL)

Aplica-se a:SQL ServerBase de Dados SQL do AzureInstância Gerida do Azure SQLAzure Synapse AnalyticsSistema de Plataforma de Análise (PDW)Ponto de Extremidade de Análise SQL no Microsoft FabricArmazém no Microsoft FabricBase de Dados SQL no Microsoft Fabric

Substitui NULL pelo valor de substituição especificado.

Transact-SQL convenções de sintaxe

Sintaxe

ISNULL ( check_expression , replacement_value )

Arguments

check_expression

A expressão a verificar para NULL. check_expression pode ser de qualquer tipo.

replacement_value

A expressão a devolver se check_expression for NULL. replacement_value deve ser de um tipo que seja implicitamente convertível para o tipo de check_expression.

Tipos de devolução

Devolve o mesmo tipo que check_expression. Se for fornecido um literal NULLcomo check_expression, ISNULL devolve o tipo de dado do replacement_value. Se um literal NULL for fornecido como check_expression e não for fornecido replacement_value , ISNULL retorna um int.

Observações

O valor de check_expression é devolvido se não NULLfor . Caso contrário, replacement_value é devolvido depois de ser implicitamente convertido para o tipo de check_expression, se os tipos forem diferentes. replacement_value pode ser truncado se replacement_value for mais longo do que check_expression.

Observação

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

Examples

Os exemplos de código neste artigo usam o banco de dados de exemplo AdventureWorks2025 ou AdventureWorksDW2025, que pode ser descarregado da página inicial de Exemplos e Projetos da Comunidade do Microsoft SQL Server.

A. Usar ISNULL com AVG

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

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

Aqui está o conjunto de resultados.

59.79

B. Usar ISNULL

O exemplo seguinte seleciona a descrição, percentagem de desconto, quantidade mínima e quantidade máxima para todas as ofertas especiais em AdventureWorks2025. Se a quantidade máxima para uma determinada oferta especial for NULL, a MaxQty mostrada no conjunto de resultados é 0.00.

USE AdventureWorks2022;
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 Quantidade máxima
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 seguinte usa ISNULL para substituir um NULL valor para Color, pela cadeia None.

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

Aqui está um conjunto de resultados parciais.

ID do Produto Nome Número do Produto Cor
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 Black
318 ML Crankarm CA-6738 Black
319 HL Crankarm CA-7457 Black

C. Teste para NULL numa cláusula WHERE

Não uses ISNULL para encontrar NULL valores. Utilize IS NULL em substituição. O exemplo seguinte encontra todos os produtos que têm NULL na coluna de peso. Note 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 and Analytics Platform System (PDW)

D. Usar ISNULL com AVG

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

-- Uses AdventureWorksDW

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

Aqui está o conjunto de resultados.

52.88

E. Usar ISNULL

O exemplo seguinte serve ISNULL para testar valores NULL na coluna MinPaymentAmount e mostrar o valor 0.00 dessas linhas.

-- Uses AdventureWorks

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

Aqui está um conjunto de resultados parciais.

Nome do Revendedor Pagamento Mínimo
Uma Associação de Bicicletas 0.0000
Uma Loja de Bicicletas 0.0000
Uma Loja de Bicicletas 0.0000
Uma Grande Empresa de Bicicletas 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 numa cláusula WHERE

O exemplo seguinte encontra todos os produtos que têm NULL na Weight coluna. Note o espaço entre IS e NULL.

-- Uses AdventureWorksDW

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