加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

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

发布时间:2020-12-12 16:48:15 所属栏目:MsSql教程 来源:网络整理
导读:我正在寻找一种使用小于或大于符号的sql select查询中构建案例语句的方法.例如,我想根据变量选择一个排名: DECLARE @a INTSET @a = 0SELECT CASE WHEN @a 3 THEN 0 WHEN @a = 3 THEN 1 WHEN @a 3 THEN 2 END 我想把它写成: DECLARE @a INTSET @a = 0SELECT
我正在寻找一种使用小于或大于符号的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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读