0

テーブルにビット値があり、ビット (0 または 1) と NULL (デフォルト) が含まれています。

これが私のSProcです:

CREATE PROCEDURE msp_CustomerStatistics 
   @Postal_MinValue int,
   @Postal_MaxValue int,
   @SubscriberState bit,
   @CustomerType varchar(50)
BEGIN
   [...]
   WHERE Sub = @SubscriberState
   AND Postal BETWEEN @Postal_MinValue AND @Postal_MaxValue
   AND CustType = @CustomerType
END

@SubscriberState パラメーターに 1 または 0 を渡すと、正しい結果が得られます。しかし、null を渡すと、結果は 0 になり、正しくありません。

次の where 句を使用して SQL 選択を作成すると、次のようになります。

WHERE Sub IS NULL

その後、結果は正しいカウントを示します。

ストアド プロシージャを WHERE 句の NULL パラメータでも動作させる方法について何か考えはありますか??

4

2 に答える 2

3

=null 値で演算子を使用することはできません。NULL との比較は常に false を返します。WHERE ステートメントを次のように変更してみてください。

WHERE (Sub = @SubscriberState OR (@SubscriberState IS NULL AND Sub IS NULL))
于 2013-08-15T13:42:30.863 に答える