A principal diferença de funcionalidade é que o COALESCE aceita n argumentos, retornando o primeiro com valor não NULL entre eles. O ISNULL só aceita dois argumentos, um possivelmente NULL, e outro para retornar se o primeiro for NULL.
Por exemplo, isto só dá para fazer com COALESCE:
SELECT COALESCE(col1, col2, col3, col4) AS valor;
Isso seleciona o primeiro valor que não seja nulo entre as quatro colunas passadas. É sempre bom lembrar que COALESCE faz parte do padrão da linguagem SQL, enquanto o ISNULL não faz.
Dica de Leitura: Se você está procurando melhorar suas habilidades em programação, especialmente em linguagens como SQL, também é importante entender como ferramentas avançadas de codificação podem ajudar. Por exemplo, aprender a usar o OpenAI Codex pode ser uma ótima maneira de aumentar sua eficiência. Leia nosso guia sobre como usar o OpenAI Codex com mais eficiência para descobrir como essa tecnologia pode transformar sua experiência de codificação.
LEIA TAMBÉM:
Outra diferença: o ISNULL retorna o tipo do seu primeiro argumento, enquanto o COALESCE retorna o tipo de maior precedência entre os passados.
DICA: Quanto ao desempenho entre a duas, ISNULL é a melhor escolha em sub queries (sub consultas)
Vamos aos exemplos:
As principais diferenças entre eles incluem:
- COALESCE é padrão SQL-ANSI e ISNULL é implementação Microsoft (T-SQL). Estas diferenças entre as duas funções são bastante simples.
- COALESCE pode aceitar vários parâmetros, e ISNULL só pode aceitar dois parâmetros, o primeiro , que é o campo a ser verificado, e o segundo que será o valor que deverá inserir em um registro nulo.
No exemplo abaixo tanto faz usar COALESCE OU ISNULL, iremos ter o mesmo resultado. Para fins de demonstração criarei uma tabela temporária e irei inserir alguns registros nela, e logo em diante farei um select aonde irá pegar somente os registros não nulos das colunas “primeiro_email, e segundo email”.
CREATE TABLE #EMAIL
(
ID TINYINT IDENTITY,
PRIMEIRO_EMAIL VARCHAR (50) NULL,
SEGUNDO_EMAIL VARCHAR (50) NULL
)
GO
INSERT INTO #EMAIL VALUES ('[email protected]', null)
INSERT INTO #EMAIL VALUES ('[email protected]', null)
INSERT INTO #EMAIL VALUES ('[email protected]', null)
INSERT INTO #EMAIL VALUES (null, '[email protected]')
INSERT INTO #EMAIL VALUES (null, '[email protected]')
INSERT INTO #EMAIL VALUES (null, '[email protected]')
INSERT INTO #EMAIL VALUES (null, '[email protected]')
INSERT INTO #EMAIL VALUES ('[email protected]', null)
SELECT COALESCE (PRIMEIRO_EMAIL, SEGUNDO_EMAIL) AS EMAIL
FROM #EMAIL
Constrains com IS NULL
Constraints, que tem a capacidade de determinar as regras que as colunas de nossas tabelas terão. Antes de configurar o Constraints, vamos verificar todos os registros que tiverem observações nulas e vamos apagá-los. Queremos selecionar todas as observações que são nulas, são nulas, SÃO NULAS, IS NULL :
SELECT * FROM compras WHERE observacoes IS NULL;
+—-+——–+————+————-+———-+
| id | valor | data | observacoes | recebida |
+—-+——–+————+————-+———-+
| 47 | 150.00 | 2016-01-04 | NULL | 1 |
+—-+——–+————+————-+———-+
1 row in set (0,00 sec)
Vamos excluir todas as compras que tenham as observações nulas:
DELETE FROM compras WHERE observacoes IS NULL;
Query OK, 1 row affected (0,01 sec)
LEIA TAMBÉM: 21 comandos SQL essenciais para programadores e BI
Continue aprendendo:
Agora que você já sabe sobre as diferenças entre COALESCE e ISNULL, que tal avançar seus conhecimentos em programação Python e não travar na hora do live coding? Aprenda a se destacar em entrevistas técnicas de Python

