Question

Je donne les résultats suivants:

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

Si @VariableEqualToZero est nulle, il remplace le 1. Je besoin de remplacer 1 si @VariableEqualToZero = 0 aussi bien. Comment puis-je faire cela?

Était-ce utile?

La solution

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

Autres conseils

Si vous utilisez SQL Server, vous pouvez probablement utiliser une instruction nullif? (À savoir définir la valeur nulle si elle est 0 alors mis à 1 si elle est nulle - devrait prendre à la fois de 0 et des 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 seulement des raccourcis pour une instruction CASE. Vous pouvez consulter l'aide pour la syntaxe de CASE.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top