使用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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |