【问题标题】:SQL CASE statement with table and operator带有表和运算符的 SQL CASE 语句
【发布时间】:2020-08-27 18:06:18
【问题描述】:

尝试根据条件应用运算符。

我想让下面的查询工作;

SELECT fName,
       LName
WHERE active =1
  AND CASE @statusid
           WHEN -100 THEN (StatusID NOT IN (-5,-3))
           WHEN -101 THEN StatusID NOT IN (-5, -3, -1)
           WHEN -102 THEN StatusID NOT IN (-3)
           ELSE StatusID = @statusid
      END

【问题讨论】:

  • 这个查询有什么错误?
  • T-SQL 仅支持CASE 表达式。 T-SQL 不支持Case (Switch) 语句。

标签: sql-server switch-statement case


【解决方案1】:

正如我在评论中提到的,T-SQL 不支持 Case (Switch) 语句,仅支持 CASE 表达式。但是,您需要在这里做的只是使用简单的“旧”布尔逻辑:

SELECT fName,
       lName
--Where is your FROM?
--I have added one
FROM dbo.YourTable
WHERE active = 1
  AND ((@statusid = -100 AND StatusID NOT IN (-5,-3))
   OR  (@statusid = -101 AND StatusID NOT IN (-5,-3,-1))
   OR  (@statusid = -102 AND StatusID != -3)
   OR  StatusID = @Statusid);

【讨论】:

  • 感谢 Larnu 分享解决方案
  • 如果它解决了问题,请考虑将其标记为解决方案,@Vikrant,以便将来的读者知道它很有帮助。
猜你喜欢
  • 2021-11-15
  • 1970-01-01
  • 2022-06-22
  • 2014-07-09
  • 1970-01-01
  • 2020-12-06
  • 1970-01-01
  • 2023-02-21
  • 1970-01-01
相关资源
最近更新 更多