sql-server-2005 - where 子句中的 switch case

标签 sql-server-2005 sql-server-2008

我需要检查三个条件:

if @filter = 1
{
    select * from employeestable where rating is not null
}
else if @filter = 2
{
    select * from employeestable where rating is null
}
else
{
    select * from employeestable  
}

我需要使用 case 语句来完成此操作。现在我有超过 30 行查询,如果我使用案例,我可以减少我的代码高达 70%
请让我知道我该怎么做。

最佳答案

这个怎么样?

WHERE   (@filter = 1 AND rating IS NOT NULL)
OR      (@filter = 2 AND rating IS NULL)
OR      (@filter <> 1 AND @filter <> 2)

关于sql-server-2005 - where 子句中的 switch case,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2810628/

相关文章:

sql - TSQL : How to Join/Combine rows of a single column into a CSV list

sql-server - 将十六进制值转换为bigint

SQL Server 2008索引碎片问题

sql - 避免子查询

sql-server-2005 - IIF(IsNothing(Fields!field.value), "", Fields!.value.ToString)) 生成错误

SQL 将 INSERT SELECT 也转换为 UPDATE

.net - 如何将VS 2012中的 Crystal 报表连接到Sql Server 2008?

sql - 使用 SQL 获取文件扩展名?

SQL Server 2005 IsNumeric 未捕获 '0310D45'

sql - 为什么在远程表调用上使用 NOLOCK 时需要 WITH?