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?

È stato utile?

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
scroll top