我已经解决这个问题一段时间了,但我认为必须有一种更简单的方法来解决这个问题,所以我决定发表一篇文章。
我有一个数据过滤器参数,我想在我的 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/