14

私は次のものを持っています:

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

@VariableEqualToZero が null の場合は 1 に置き換えられます。@VariableEqualToZero = 0 の場合も 1 に置き換える必要があります。どうすればいいですか?

4

4 に答える 4

38

SQL Server を使用している場合、おそらくNULLIFステートメントを使用できますか?
つまり、値を次NULLの場合に0設定し、次に次の1場合に設定しますNULL- 0 と NULL の両方をキャッチする必要があります。

SET @SomeVariable = @AnotherVariable/ISNULL(NULLIF(@VariableEqualToZero,0),1) - 1
于 2011-10-11T06:22:18.357 に答える
17
SET @SomeVariable = @AnotherVariable / COALESCE(
        CASE 
             WHEN @VariableEqualToZero = 0 THEN 1
             ELSE @VariableEqualToZero
        END, 1) - 1
于 2009-02-24T03:37:06.100 に答える
3
set @SomeVariable = @AnotherVariable /
(case when isnull(@VariableEqualToZero, 0) = 0 then 1 else
@VariableEqualToZero end) - 1
于 2009-02-24T03:37:18.923 に答える
2

あなたはCASEを使用します

それ以外の

ISNULL(@VariableEqualToZero,1)

使用する

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

COALESCE と ISNULL は、基本的に CASE ステートメントの単なるショートカットです。CASE の構文については、ヘルプを参照してください。

于 2009-02-24T03:43:55.523 に答える