t-sql - 我可以在 where 子句中间使用 If/Else 或 Case 吗?

标签 t-sql sql-server-2008-r2

我已经解决这个问题一段时间了,但我认为必须有一种更简单的方法来解决这个问题,所以我决定发表一篇文章。

我有一个数据过滤器参数,我想在我的 where 子句中创建一个 if/else 分支或 case 分支。如果我的 @State 变量不是“All”,我想将“And (state = @State)”添加到我的 where 子句中。

SELECT     timestamp, service, state
FROM         socketLog
WHERE     (timestamp BETWEEN dbo.fxMilitaryTime('02/01/12', 'mdy') 
    AND DATEADD(dd, 1, getdate())) AND (state = @State)
ORDER BY service

我尝试让 if/else 和 case 语句在 where 中工作,但遇到语法问题。我很确定 where 子句支持 case 和 if 语句,但我无法让它正常工作。

感谢那些有时间提供帮助的人。

最佳答案

你不能将最后一位更改为:

AND (@State = 'All' OR @State = state)

除非我误会了?!

关于t-sql - 我可以在 where 子句中间使用 If/Else 或 Case 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9303310/

相关文章:

sql - 插入时将数字转换为数据类型数字的算术溢出错误

sql-server - SQL Server 服务为空且找不到服务器名称

sql - 反转 SQL 表中的所有列

sql - 计数除以 0

sql-server - 如何使用嵌套循环加速查询

sql - 在 SQL 中从游标创建 View ?

sql-server - 为什么这个 T-SQL OUTPUT INTO with FOREIGN KEY hack 有效?

sql - 从输出中删除最后 3 个字符的数据

sql-server-2008 - T-SQL 查看子查询Where 子句

sql-server - 执行插入时的索引性能