我想写一个复杂的SWITCH
声明SQL (SQL Server 2008 R2)
目标是在声明中写出这样的内容WHERE
:
- 如果
myParam = 0
,则myColumn = myColumn
(0 表示“未定义”,因此我们“忽略”该WHERE
语句) - 如果
0 < myParam < 6
,那么myColumn = myParam
- 如果
myParam >= 6
,那么myColumn = [6 ; Infinity]
所以我写道:
WHERE
h.MyColumn = CASE @MyParam
WHEN 0 THEN h.MyColumn
WHEN @MyParam > 0 AND @MyParam < 6 THEN @MyParam
WHEN @MyParam > 6 THEN /* ??? */
首先,我走得好吗?如果是这样,我该如何写第三个WHEN
?@MyParam
只能等于 0、1、2、3、4、5 或 6,在最后一种情况下,我需要在h.MyColumn > 6
.
任何帮助表示赞赏!谢谢