Claudio Roberto

blog profissional com dicas de programação

Diferenças entre COALESCE e ISNULL

Diferenças entre COALESCE e ISNULL
  • Compartilhe esse post
  • Compartilhar no Facebook00
  • Compartilhar no Google Plus00
  • Compartilhar no Twitter

Qual a diferença COALESCE e ISNULL e quando usar cada uma delas.

Neste artigo vamos ver qual a diferença entre COALESCE e ISNULL e quando usar cada uma delas.

COALESCE: retorna o primeiro valor não nulo entre seus argumentos.

ISNULL: caso o primeiro argumento seja NULL ele retorna o valor do segundo argumento.

Mas as diferenças não param por ai. O COALESCE é padrão SQL-ANSI já o ISNULL é aceito somente no banco de dados da microsoft, ou seja, MSSQL.

Para melhor entendimento da diferença entre COALESCE e ISNULL segue um exemplo.

CREATE TABLE #AGENDA
(
ID TINYINT IDENTITY,
PRIMEIRO_NOME VARCHAR (50) NULL,
TELEFONE VARCHAR (50) NULL,
CELULAR VARCHAR (50) NULL,
CELULAR2 VARCHAR (50) NULL
)
GO
INSERT INTO #AGENDA VALUES ('Claudio Roberto', '4499131-5058', NULL, NULL)
INSERT INTO #AGENDA VALUES ('João Roberto', NULL, '4499133-2233', NULL)
INSERT INTO #AGENDA VALUES ('Carlos Alberto', NULL, NULL, '4498831-5058')
GO
SELECT PRIMEIRO_NOME, COALESCE (TELEFONE, CELULAR, CELULAR2) AS TELEFONE
FROM #AGENDA

Repare no resultado, todos os cliente apresentam telefone:

PRIMEIRO_NOME       TELEFONE
------------------- -------------
Claudio Roberto 4499131-5058
João Roberto 4499133-2233
Carlos Alberto 4498831-5058

Agora observe neste exemplo mais uma das diferenças entre COALESCE e ISNULL

DECLARE
@SIGLA AS VARCHAR (5) = NULL,
@ENDERECO AS VARCHAR (20) = 'RUA DOS SANTOS';

SELECT COALESCE (@SIGLA, @ENDERECO) AS COALESCE_SIGLA_ENDERECO
, COALESCE (@ENDERECO, @SIGLA) AS COALESCE_ENDERECO_SIGLA
, ISNULL (@SIGLA, @ENDERECO) AS ISNULL_SIGLA_ENDERECO
, ISNULL (@ENDERECO, @SIGLA) AS ISNULL_ENDERECO_SIGLA

Segue o resultado:

COALESCE_SIGLA_ENDERECO COALESCE_ENDERECO_SIGLA ISNULL_SIGLA_ENDERECO ISNULL_ENDERECO_SIGLA
----------------------- ----------------------- --------------------- ---------------------
RUA DOS SANTOS RUA DOS SANTOS RUA D RUA DOS SANTOS

Note que nos resultados com COALESCE, ambas as consultas retornaram o campo @ENDERECO (VARCHAR 20), agora já o resultado com ISNULL foi diferente, pois caso o primeiro argumento seja nulo (NULL) ele irá apresentar o conteudo do segundo argumento mas com o tipo de dados do primeiro argumento, no exemplo acima um VARCHAR(5).

Em se tratando de desempenho ISNULL é mais rápido em sub consultas. Agora se você deseja criar consultas mantendo a compatibilidade em diferentes bancos de dados, MSSQL ou MySQL, o COALESCE deve ser adotado.

Espero ter ajudado e eu te vejo no próximo artigo.

  • Compartilhe esse post
  • Compartilhar no Facebook00
  • Compartilhar no Google Plus00
  • Compartilhar no Twitter

Olá, deixe seu comentário para Diferenças entre COALESCE e ISNULL

Enviando Comentário Fechar :/