sql - 在 IN 子句中使用 CASE 语句

标签 sql sql-server sql-server-2008 tsql

是否可以在 IN 子句中使用 CASE 语句?

这是我一直试图正确编译的简化版本:

SELECT * FROM MyTable 
WHERE StatusID IN (
CASE WHEN @StatusID = 99 THEN (5, 11, 13)
ELSE (@StatusID) END )

谢谢!

最佳答案

CASE仅返回标量值。你可以这样做。 (我假设,根据您的示例,当 @StatusID = 99 时,StatusID 值 99 不匹配。)

select *
from MyTable
where (@StatusID = 99 and StatusID in (5, 11, 13))
    or (@StatusID <> 99 and StatusID = @StatusID)

关于sql - 在 IN 子句中使用 CASE 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11232267/

相关文章:

image - VARBINARY(MAX) 和 IMAGE 数据类型之间是否存在很大的技术差异?

sql-server-2008 - 连接具有空值的求和数据 - SQL Server

MySql - 运行触发器以在指定时间后更改列状态

ios - NSPredicate 在 CoreData 中按字母顺序获取记录

php - 数据库插入或更新后向 Android 应用程序发送推送通知

sql - 提取不同日期修改的记录

mysql - 如何根据 select 语句中的值限制结果?

sql - 列模式的 Spark SQL 区分大小写过滤器

php - 从 2 个来源提取信息并计数

sql - 多列平均值