logo

Função ISNULL do SQL Server

É uma função interna do SQL Server. Ele permite que o usuário substitua os valores NULL com um determinado valor de substituição. Este artigo fornece uma visão geral completa da função ISNULL para retornar um valor alternativo se a expressão ou os registros da tabela tiverem valores NULL.

Sintaxe

A seguir está uma sintaxe que ilustra a função ISNULL:

 ISNULL ( Expression, Replacement ) 

Como podemos ver que esta sintaxe aceita apenas dois argumentos:

    Expressão: É usado para verificar NULL. Pode ser de qualquer tipo.Substituição: É o valor que será retornado quando a expressão for NULL. Deve ser implicitamente conversível em um valor do tipo de expressão.

Se a expressão for avaliada como NULL, esta função substituirá o valor NULL pelo valor de substituição. Quando o argumento é tipos de dados são diferentes , o servidor SQL transforma implicitamente o tipo de dados de valor de substituição no tipo de dados de expressão antes de retornar um valor. Obteremos o valor da expressão quando a expressão não for NULL.

A função ISNULL pode funcionar no SQL Server (a partir de 2008), Parallel Data Warehouse, Banco de Dados SQL do Azure e Azure SQL Data Warehouse.

Exemplo de função ISNULL

Vamos explorar a função ISNULL com alguns exemplos no SQL Server.

java concatenando strings

1. Função ISNULL com o valor numérico

O exemplo abaixo usa a função ISNULL. Aqui o primeiro argumento é NULL; portanto, retorna o valor de um segundo argumento em um resultado:

o que é uri
 SELECT ISNULL(NULL, 25) AS Result; 

Após a execução, obteremos a saída abaixo:

Função ISNULL do SQL Server

2. Função ISNULL com dados de cadeia de caracteres

O exemplo abaixo usa a função ISNULL. Aqui obteremos o valor da string 'Olá' porque é o primeiro argumento. A partir da definição da função ISNULL(), ela retorna o valor do primeiro argumento quando NÃO é NULL:

 SELECT ISNULL('Hello', 'Javatpoint') AS Result; 

Após a execução, obteremos a saída abaixo:

Função ISNULL do SQL Server

3. Função ISNULL com variáveis

O exemplo abaixo usa a função ISNULL e retorna o resultado usando uma variável:

 DECLARE @expres VARCHAR(45); DECLARE @value VARCHAR(25); SET @expres = NULL; SET @value = 'Javatpoint'; SELECT ISNULL(@expres, @value) AS Result; 

Após a execução, obteremos a saída abaixo:

Função ISNULL do SQL Server

4. Função ISNULL na tabela

Aqui veremos como podemos substituir um valor de coluna por um valor significativo quando ele contém valores nulos. Vamos primeiro criar uma tabela chamada ' Funcionário' usando a declaração abaixo:

 CREATE TABLE Employee (ID INT IDENTITY PRIMARY KEY, Emp_Name VARCHAR(50) NOT NULL, Age INT NULL, Salary INT NULL ); 

Agora, iremos inserir alguns valores nesta tabela usando a instrução abaixo:

 INSERT INTO Employee (Emp_Name, Age, Salary) VALUES ('Kevin Huges', 28, 45000), ('Rose Bennet', NULL, 36000), ('Peter Butler', 25, NULL); 

Quando verificamos a tabela, podemos ver que funcionários 2 e 3 têm NULL valor.

Função ISNULL do SQL Server

Suponha que queiramos substituir os valores NULL dessas colunas sem atualizá-los permanentemente na tabela. Nesse caso, podemos usar a função ISNULL para substituir os valores NULL pelo valor específico.

Por exemplo , queremos devolver o idade e salário do funcionário com 22 e 25.000, respectivamente, se suas colunas possuírem valores NULL na tabela Funcionários. Podemos fazer isso usando a seguinte afirmação:

comprimento da string java
 SELECT ID, Emp_Name, ISNULL(Age, 22) AS Age, ISNULL(Salary, 25000) AS Salary FROM Employee; 

Após a execução, obteremos a saída abaixo:

Função ISNULL do SQL Server

Se executarmos a consulta com a função ISNULL para a coluna onde nenhuma coluna possui valores NULL na tabela, esta consulta retornará os valores reais das linhas.

Por exemplo , atualizamos o salário do funcionário cujo ID=2 do seguinte modo:

 UPDATE Employee SET Salary = 65000 WHERE ID=2; 

Novamente, se executarmos a função ISNULL, isso não altera a coluna salário. Veja a saída abaixo:

Função ISNULL do SQL Server

5. ISNULL com funções agregadas

O SQL Server também nos permite usar funções agregadas como SUM, AVG com a função ISNULL. Suponha que precisemos obter o soma de um salário coluna presente na tabela Employee, e se alguma coluna de salário tiver NULL, será substituída por 25000 antes de adicionar os salários.

Antes de realizar os métodos agregados, atualizaremos o salário do funcionário com NULL cujo id é 2, utilizando a consulta abaixo.

 UPDATE Employee SET Salary = NULL WHERE ID=2; 

O exemplo abaixo primeiro substitui o valor NULL por 25000 e, em seguida, executa a função SUM nele. Veja a saída abaixo:

como recuperar aplicativos ocultos
 SELECT SUM(ISNULL(Salary, 25000)) AS Sum_of_Salaries FROM Employee; 

Após a execução, obteremos a saída abaixo:

Função ISNULL do SQL Server

Da mesma forma, a função ISNULL pode ser usada para substituir valores NULL e então retornar o valor médio com Função AVG() . Veja a declaração abaixo:

 SELECT AVG(ISNULL(Salary, 25000)) AS Avg_of_Salaries FROM Employee; 

Após a execução, obteremos a saída abaixo:

Função ISNULL do SQL Server

Diferença entre SQL Server ISNULL e IS NULL

As funções ISNULL e IS NULL são diferentes no SQL Server. Usamos a função ISNULL quando precisamos substitua os valores NULL com um valor especificado. Por outro lado, usamos a função IS NULL quando queremos identificar valores NULL em uma mesa.

Vejamos o exemplo abaixo para ilustrar suas diferenças .

por que string imutável em java

Suponha que queiramos obter os dados dos funcionários do ' Funcionário' tabela que contém valores NULL na coluna Salário. Para obter este tipo de informação, devemos usar a função IS NULL no ONDE cláusula da seguinte forma:

 SELECT * FROM Employee WHERE Salary IS NULL; 

Ele retornará o detalhe do funcionário cujo salário é NULO:

Função ISNULL do SQL Server

Agora, se tentarmos obter este tipo de informação com a função ISNULL, o SQL Server através do seguinte erro :

 SELECT * FROM Employee WHERE Salary ISNULL(NULL, 0; 

Aqui está o erro:

Função ISNULL do SQL Server

Assim, fica claro que o SQL Server não nos permite usar ISNULL para encontrar valores NULL.