我的代码出了什么问题?
我想传递BIT以从TBL表中检索非活动或活动行。
这是错误
关键字“IS”附近的语法不正确。
这是代码
CREATE function [CM].[fnSearch]
(
@Status bit
)
RETURNS Table
as
RETURN
(
SELECT *
FrOM TBL
WHERE CASE @Status
WHEN '0' THEN (DeletedBy IS NULL)
ELSE (DeletedBy IS NOT NULL)
END
)
更新
(在SELECT之前是我的输入错误。 对不起。
答案 0 :(得分:5)
如果我正在读这个,那你试图使用(DeletedBy IS [NOT] NULL)
作为布尔表达式来计算一个比特值(1或0)?如果是这样,你不能这样做。你需要这样的东西:
CASE WHEN (@Status = 0 AND DeletedBy IS NULL) OR DeletedBy IS NOT NULL THEN 1 ELSE 0 END
答案 1 :(得分:2)
SQL不会将布尔表达式计算为1
或0
。您必须将其设置为在true
时将其显式设置为1,在false
时将其显式设置为0.