SQL查询错误“关键字'IS'附近的语法不正确。”

时间:2011-12-05 02:42:09

标签: sql-server

我的代码出了什么问题?

我想传递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之前是我的输入错误。 对不起。

2 个答案:

答案 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不会将布尔表达式计算为10。您必须将其设置为在true时将其显式设置为1,在false时将其显式设置为0.