web-dev-qa-db-ja.com

SQLServerがIsNullとゼロをチェックする

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

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

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

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

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

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

CASEを使用します

の代わりに

ISNULL(@VariableEqualToZero,1)

使用する

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

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

2
Will Rickards