Verifique SQL Server para IsNull e para Zero
-
06-09-2019 - |
Pergunta
Eu tenho o seguinte:
set @SomeVariable = @AnotherVariable/isnull(@VariableEqualToZero,1) - 1
Se @VariableEqualToZero é nulo substitui o 1. eu preciso dele para substituir 1 se @VariableEqualToZero = 0 também. Como eu faço isso?
Solução
SET @SomeVariable = @AnotherVariable / COALESCE(
CASE
WHEN @VariableEqualToZero = 0 THEN 1
ELSE @VariableEqualToZero
END, 1) - 1
Outras dicas
Se você estiver usando SQL Server, provavelmente você pode usar uma instrução NULLIF? (Ou seja, definir o valor como nulo se for 0, em seguida, configurá-lo para 1 se é nula - deve pegar para ambos os 0 e nulos
SET @SomeVariable = @AnotherVariable/ISNULL(NULLIF(@VariableEqualToZero,0),1) - 1
set @SomeVariable = @AnotherVariable /
(case when isnull(@VariableEqualToZero, 0) = 0 then 1 else
@VariableEqualToZero end) - 1
Você usa CASE
em vez de
ISNULL(@VariableEqualToZero,1)
uso
CASE WHEN @VariableEqualToZero IS NULL OR @VariableEqualToZero = 0 THEN 1 ELSE @VariableEqualToZero END
COALESCE e ISNULL são essencialmente apenas atalhos para uma instrução CASE. Você pode consultar a ajuda para a sintaxe de CASE.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow