我正在尝试根据某个值更改where子句的一部分条件。我查看了与此类似的文章,包括:SQL where子句中的switch/case,但它们并没有完全涉及到我的情况。
我有一个存储过程,它根据其输入执行选择操作。这些输入是可选的(或者按照他们的说法有默认参数)。
其中两个参数是数字。
- 如果只指定第一个数字,则列X必须等于该数字。
- 如果指定第一个和第二个数字,则列X必须>=第一个数字且<=第二个数字。
- 如果仅指定第二个数字,则无效。
这是我尝试的内容(显然不起作用):
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。