【问题标题】:SQL query error "Incorrect syntax near the keyword 'IS'."SQL 查询错误“关键字 'IS' 附近的语法不正确。”
【发布时间】:2012-01-12 21:46:50
【问题描述】:

我的代码有什么问题?

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

【问题讨论】:

  • 我在选择前看到一个括号,该括号永远不会关闭。

标签: sql-server


【解决方案1】:

如果我没看错,您是在尝试使用 (DeletedBy IS [NOT] NULL) 作为布尔表达式,计算结果为位值(1 或 0)?如果是这样,你不能那样做。你需要这样的东西:

CASE WHEN (@Status = 0 AND DeletedBy IS NULL) OR DeletedBy IS NOT NULL THEN 1 ELSE 0 END

【讨论】:

    【解决方案2】:

    SQL 不会将布尔表达式计算为 10。您必须将其设置为在 true 时显式设置为 1,在 false 时显式设置为 0。

    【讨论】:

      猜你喜欢
      • 2016-02-15
      • 2011-04-07
      • 2013-12-15
      • 2011-08-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-02
      相关资源
      最近更新 更多