Vérifiez SQL Server pour IsNull et Zero
-
06-09-2019 - |
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?
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