Estou apenas lendo a documentação dos exames do SQL Server 2012 e vi o seguinte ponto:
caso contra isnull contra coalescer
Agora, eu sei COMO usar cada um, mas não sei QUANDO usar cada um. Por favor, alguém poderia esclarecer. Obrigado.
Obs. Por favor, poderíamos ter uma tag para perguntas do exame?
ISNULL - disponível apenas no SQL Server. Permite testar e substituir um valor NULL por outro.
COALESCE - padrão ANSI. Permite o teste e a substituição de um valor NULL pelo primeiro valor não nulo em um conjunto de argumentos de comprimento variável. É importante observar que os fatores de precedência do tipo de dados nesse
No exemplo acima, 'a' é o primeiro valor não nulo, mas os dados de caractere têm menor precedência do que o número inteiro.
Outra consideração entre ISNULL vs COALESCE é que a resultante de ISNULL é determinada como NOT NULL enquanto o resultado de uma chamada COALESCE é NULLable. Veja a postagem do JRJ ISNULL() <> COALESCE() Embora isso possa parecer uma coisa trivial, o otimizador de consulta pode fazer planos diferentes com base na nulidade de uma coluna.
Você pode testar facilmente a nulidade de suas expressões isnull/coalesce/case executando-as através do dmo sys.dm_exec_describe_first_result_set
CASE - Também uma função escalar padrão ANSI. Eu usaria CASE sobre os dois anteriores quando tenho um teste que não pode ser expresso em um escalar simples, mas é uma resposta bastante fraca, admito.
ISNULL dá a você a possibilidade de retornar 1 repalcement, COALESCE não está limitado a um valor, por exemplo,
COALESCE(v1,v2,v3,v4,v5)
se V5 for o único valor que NÃO é NULL, ele será retornado