我正在寻找一种使用小于或大于符号的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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。