Vérification de SQL Server pour IsNull et pour zéro

J'ai ce qui suit:

set @SomeVariable = @AnotherVariable/isnull(@VariableEqualToZero,1) - 1 

Si @VariableEqualToZero est nul, il remplace le 1. J'en ai besoin pour substituer 1 si @VariableEqualToZero = 0 aussi. Comment puis-je faire cela?

     SET @SomeVariable = @AnotherVariable / COALESCE( CASE WHEN @VariableEqualToZero = 0 THEN 1 ELSE @VariableEqualToZero END, 1) - 1 

    Si vous utilisez SQL Server, vous pouvez probablement utiliser une instruction nullif? (c'est-à-dire définir la valeur à null si elle est 0, puis la définir à 1 si elle est nulle – devrait être utilisée pour les 0 et les valeurs NULL

     SET @SomeVariable = @AnotherVariable/ISNULL(NULLIF(@VariableEqualToZero,0),1) - 1 
     set @SomeVariable = @AnotherVariable / (case when isnull(@VariableEqualToZero, 0) = 0 then 1 else @VariableEqualToZero end) - 1 

    Vous utilisez CASE

    au lieu de

     ISNULL(@VariableEqualToZero,1) 

    utilisation

     CASE WHEN @VariableEqualToZero IS NULL OR @VariableEqualToZero = 0 THEN 1 ELSE @VariableEqualToZero END 

    COALESCE et ISNULL sont essentiellement des raccourcis pour une instruction CASE. Vous pouvez consulter l'aide pour la syntaxe de CASE.