Frage

Ich habe folgende Möglichkeiten:

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

Wenn @VariableEqualToZero null ist es die 1. Stellvertreter Ich brauche es 1 zu ersetzen, wenn @VariableEqualToZero = 0 als auch. Wie mache ich das?

War es hilfreich?

Lösung

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

Andere Tipps

Wenn Sie SQL Server verwenden, können Sie wahrscheinlich eine nullif Anweisung verwenden? (Das heißt den Wert auf Null gesetzt, wenn es dann 0 auf 1 gesetzt, wenn es null ist - sollte für beide 0'en und NULLs fängt

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

Sie verwenden CASE

statt

ISNULL(@VariableEqualToZero,1)

Verwendung

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

COALESCE und ISNULL sind im Wesentlichen nur Abkürzungen für eine CASE-Anweisung. Sie können die Hilfe für die Syntax von CASE konsultieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top