使用sql case语句中的比较符号

前端之家收集整理的这篇文章主要介绍了使用sql case语句中的比较符号前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在寻找一种使用小于或大于符号的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服务器是否必须运行每个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为3或更大,则SIGN分别返回0或1.

如果你想要的输出是0,1和2,那么你可以简化更多:

DECLARE @a INT
SET @a = 0

SELECT SIGN(@a - 3) + 1

猜你在找的MsSQL相关文章