我正在寻找一种使用小于和大于符号在sql select查询中构建案例语句的方法。例如,我要基于变量选择排名:
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案例声明:
Select Case i Case Is < 100 p = 1 Case Is >= 100 p = 2 End Select
也许在SQL中是不可能的,那没关系,我只想确认一下。
您可以将SIGN函数用作
DECLARE @a INT SET @a = 0 SELECT CASE SIGN(@a - 3) WHEN -1 THEN 0 WHEN 0 THEN 1 WHEN 1 THEN 2 END
如果@a小于3,则@a - 3结果为负int,其中SIGN返回-1。
@a
@a - 3
如果@a大于等于3,则SIGN分别返回0或1。
如果您想要的输出是0、1和2,则可以进一步简化:
DECLARE @a INT SET @a = 0 SELECT SIGN(@a - 3) + 1