Controllare SQL Server per IsNull e per Zero
-
06-09-2019 - |
Domanda
Ho il seguente:
set @SomeVariable = @AnotherVariable/isnull(@VariableEqualToZero,1) - 1
Se @VariableEqualToZero è null sostituisce l'1. Ho bisogno di sostituire 1 se @VariableEqualToZero = 0 pure. Come faccio a fare questo?
Soluzione
SET @SomeVariable = @AnotherVariable / COALESCE(
CASE
WHEN @VariableEqualToZero = 0 THEN 1
ELSE @VariableEqualToZero
END, 1) - 1
Altri suggerimenti
Se si utilizza SQL Server, probabilmente si può utilizzare un'istruzione NULLIF? (Cioè impostare un valore nullo se è 0 quindi impostare a 1 se è nullo - dovrebbe prendere sia 0 e 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
Si utilizza CASE
anziché
ISNULL(@VariableEqualToZero,1)
utilizzo
CASE WHEN @VariableEqualToZero IS NULL OR @VariableEqualToZero = 0 THEN 1 ELSE @VariableEqualToZero END
COALESCE e ISNULL sono essenzialmente solo scorciatoie per una dichiarazione CASE. È possibile consultare l'aiuto per la sintassi di CASE.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow