我正在寻找一种使用小于和大于符号在 sql select 查询中构建 case 语句的方法。例如,我想根据一个变量选择一个排名:
DECLARE @a INT
SET @a = 0
SELECT CASE
WHEN @a < 3 THEN 0
WHEN @a = 3 THEN 1
WHEN @a > 3 THEN 2
END
我想把它写成:
DECLARE @a INT
SET @a = 0
SELECT CASE @a
WHEN < 3 THEN 0
WHEN 3 THEN 1
WHEN > 3 THEN 2
END
...但是 SQL 不允许我以这种方式使用 符号。有没有一种方法可以让我在 SQL 2005 中做到这一点,或者我是否需要使用第一个中的代码。
只想要代码一次的原因是因为它会使代码更具可读性/可维护性,而且还因为我不确定 SQL Server 是否必须为每个 CASE 语句运行计算。
我正在寻找等效的 VB.NET case 语句:
Select Case i
Case Is < 100
p = 1
Case Is >= 100
p = 2
End Select
也许这在 SQL 中是不可能的,没关系,我只是想确认一下。
您可以使用SIGN http://msdn.microsoft.com/en-us/library/ms188420.aspx充当
DECLARE @a INT
SET @a = 0
SELECT CASE SIGN(@a - 3)
WHEN -1 THEN 0
WHEN 0 THEN 1
WHEN 1 THEN 2
END
If @a
小于 3,则@a - 3
结果为负 int,其中 SIGN 返回 -1。
If @a
是 3 或更大,则 SIGN 分别返回 0 或 1。
如果你想要的输出是 0、1 和 2,那么你可以进一步简化:
DECLARE @a INT
SET @a = 0
SELECT SIGN(@a - 3) + 1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)