grm*_*hel 2 sql stored-procedures
我的表中有一个位值,其中包含位(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
Run Code Online (Sandbox Code Playgroud)
当我用1或0传递@SubscriberState参数时,结果是正确的。但是当我传递 null 时,结果是 0,这是不正确的。
如果我使用以下 where 子句创建 SQL 选择:
WHERE Sub IS NULL
Run Code Online (Sandbox Code Playgroud)
然后结果显示正确的计数。
知道如何让我的存储过程在 WHERE 子句中也使用 NULL 参数吗?
不能将=运算符与空值一起使用。与 NULL 的比较始终返回 false。尝试将 WHERE 语句修改为以下内容:
WHERE (Sub = @SubscriberState OR (@SubscriberState IS NULL AND Sub IS NULL))
Run Code Online (Sandbox Code Playgroud)