gpt4 book ai didi

sql - 在 where 子句中切换大小写/If

转载 作者:行者123 更新时间:2023-12-03 01:57:35 24 4
gpt4 key购买 nike

我正在尝试根据某个值更改 where 的 PART 的条件。我在这里看过类似的文章,包括:

SQL Switch/Case in where clause

但他们并没有完全处理我的案子。

我拥有的是一个存储过程,它根据其输入进行选择。这些输入是可选的(或者具有默认参数,因为他们更喜欢这样调用它)。

其中 2 个参数是数字。

  • 如果仅指定第一个数字,则 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

最佳答案

尝试以 @SECOND 的无效性为条件,而不是使用 CASE。

SELECT *
FROM BANK_DETAIL
WHERE
-- other conditions go here
AND ((@SECOND IS NULL AND X = @FIRST)
OR (@SECOND IS NOT NULL AND X >= @FIRST AND X <= @SECOND))

关于sql - 在 where 子句中切换大小写/If,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6153990/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com