【发布时间】:2011-05-27 14:53:51
【问题描述】:
我正在尝试根据某个值更改 where 部分的条件。我在这里看过类似的文章,包括:
SQL Switch/Case in where clause
但他们并没有完全处理我的案子。
我所拥有的是一个基于其输入进行选择的存储过程。这些输入是可选的(或者具有他们喜欢调用的默认参数)。
所述参数中有2个是数字。
- 如果仅指定第一个数字,则 X 列必须等于该数字。
- 如果指定了第一个和第二个数字,则 X 列必须 >= 到第一个 AND
- 如果只指定了第二个数字,则它是无效的。
这是我尝试过的(显然没有用)
DECLARE @SECOND INT;
DECLARE @FIRST INT;
SET @FIRST = 123456;
SET @SECOND = 67890;
SELECT * FROM BANK_DETAIL
WHERE -- POSSIBLY SOME OTHER WHERE CLAUSES
CASE
WHEN @SECOND IS NULL THEN
X = @FIRST
ELSE
X >= @FIRST AND X <= @SECOND
END
-- POSSIBLY SOME MORE WHERE CLAUSES
ORDER BY X
真的这感觉就像它需要一个 IF/ELSE 而不是 CASE 但我是针对 CASE .....
哦,这是 MS SQL >= 2005
【问题讨论】:
标签: sql sql-server sql-server-2005 tsql stored-procedures