Você pode usar os dois métodos, mas existem diferenças:
SELECT ISNULL(col1, 0 ) FROM table1
SELECT COALESCE(col1, 0 ) FROM table1
Comparando COALESCE () e ISNULL ():
A função ISNULL e a expressão COALESCE têm um objetivo semelhante, mas podem se comportar de maneira diferente.
Como ISNULL é uma função, ela é avaliada apenas uma vez. Como descrito acima, os valores de entrada para a expressão COALESCE podem ser avaliados várias vezes.
A determinação do tipo de dados da expressão resultante é diferente. ISNULL usa o tipo de dados do primeiro parâmetro, COALESCE segue as regras de expressão CASE e retorna o tipo de dados do valor com a maior precedência.
A capacidade NULL da expressão do resultado é diferente para ISNULL e COALESCE. O valor de retorno ISNULL é sempre considerado NOT NULLable (assumindo que o valor de retorno não seja nulo), enquanto COALESCE com parâmetros não nulos é considerado NULL. Portanto, as expressões ISNULL (NULL, 1) e COALESCE (NULL, 1), embora equivalentes, têm valores de anulabilidade diferentes. Isso faz diferença se você estiver usando essas expressões em colunas computadas, criando restrições de chave ou tornando o valor de retorno de um UDF escalar determinístico, para que possa ser indexado, conforme mostrado no exemplo a seguir.
- Essa instrução falha porque a PRIMARY KEY não pode aceitar valores NULL - e a nulidade da expressão COALESCE para col2 - é avaliada como NULL.
CREATE TABLE #Demo
(
col1 integer NULL,
col2 AS COALESCE(col1, 0) PRIMARY KEY,
col3 AS ISNULL(col1, 0)
);
- Esta instrução é bem-sucedida porque a capacidade de nulidade da função - ISNULL avalia AS NOT NULL.
CREATE TABLE #Demo
(
col1 integer NULL,
col2 AS COALESCE(col1, 0),
col3 AS ISNULL(col1, 0) PRIMARY KEY
);
As validações para ISNULL e COALESCE também são diferentes. Por exemplo, um valor NULL para ISNULL é convertido em int, enquanto que para COALESCE, você deve fornecer um tipo de dados.
ISNULL usa apenas 2 parâmetros, enquanto COALESCE usa um número variável de parâmetros.
Se você precisar saber mais, aqui está o documento completo do msdn.