SQL Server – Uso de ISNULL e COALESCE em uma pesquisa

SQL Server – Uso de ISNULL e COALESCE em uma pesquisa

30 de janeiro de 2019 0 Por Ramos de Souza Janones
Powered by Rock Convert

Nesta dica você aprenderá a diferença entre ISNULL e COALESCE em uma pesquisa SQL no SQL Server. 

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. Acredito que essa diferença você já conheça. No seu exemplo você só passa um argumento, então sob esse aspecto não há diferença entre usar uma função ou a outra. Mas é sempre bom lembrar que COALESCE faz parte do padrão da linguagem SQL, enquanto o ISNULL não faz.

Powered by Rock Convert
Como vender Software - Seja desktop, web ou MobilePowered by Rock Convert

Você vai gostar:  Transact-SQL do ZERO ao MASTER

Outra diferença (que é a que importa para a sua pergunta): o ISNULL retorna o tipo do seu primeiro argumento, enquanto o COALESCE retorna o tipo de maior precedência entre os passados. Os resultados estranhos que você mostra no screenshot são uma combinação disso com o efeito do NULLIF, que, segundo a documentação (grifo meu):

NULLIF returns the first expression if the two expressions are not equal. If the expressions are equal, NULLIF returns a null value of the type of the first expression.

Leia também:  

Ou seja, o NULL que ele retorna é tipado (nunca imaginei isso) com base no tipo do primeiro argumento. Em todos os exemplos, seria um CHAR(3)VARCHAR(3) ou algo do tipo. Isso força o castdo segundo argumento do ISNULL para o mesmo tipo. No caso do valor número, o tipo é incompatível e o resultado é *.

Banco de dados

Artigos e dicas sobre banco de dados que você vai gostar:

MongoDB

– Principais diferenças entre MongoDB e MySQL ou outro RDBMS

– Southbank Software apresenta dbKoda: uma ferramenta de desenvolvimento Open Source para MongoDB

MySQL e Instruções SQL em geral

– SQL e Regex – Entenda quando e como usar em instruções SQL

– MySQL – Manter o formato Date e DateTime em formato dd/mm/Year e dd/mm/Year:HH:mm:ss

– SQL – O que são VIEWS SQL, vantagens e desvantagens

– Instrução Insert MySQL e JSON com todos os bancos brasileiros

– PHP e MySQL – Entendendo as codificações iso-8859-1 e UTF-8 e outras

– Como redefinir a senha de root do MySQL ou do MariaDB

– Para que serve uma MySQL Transaction?

– Banco de Dados – Índices desnecessários no banco são um problema?

– Entenda a diferença entre LIKE, IN e BETWEEN no MySQL

– LinkedIn desenvolve a ferramenta MySQL Query Analyzer

– Como otimizar consultas MySQL

– Quando é interessante desnormalizar o banco de dados?

– Entenda Views em SQL, vantagens e desvantagens

– O que é normalização de banco de dados

– Por que não devemos usar funções do tipo mysql_*

SQL – Entenda as diferenças entre aspas simples e duplas

– SQL – Not IN ou Not EXISTS quando usar?

– SQL – Entendendo JOINS

– PHP Do Zero Ao Profissional – Análise do Curso

 

Veja mais em: SQL Server.

Powered by Rock Convert
Siga os bons!
Últimos posts por Ramos de Souza Janones (exibir todos)

Sumário
SQL Server - Uso de ISNULL e COALESCE em uma pesquisa
Nome do artigo
SQL Server - Uso de ISNULL e COALESCE em uma pesquisa
Descrição
Nesta dica você aprenderá a diferença entre ISNULL e COALESCE em uma pesquisa SQL no SQL Server. 
Autor
Nome
Ramos da Informática
Logo