【问题标题】:SQL case when expression between?表达式之间的SQL case?
【发布时间】:2019-12-06 15:12:07
【问题描述】:
有没有办法做类似的事情:
DECLARE @x INT;
DECLARE @y INT;
SET @x=45;
SET @y=30;
SELECT
CASE @x - @y
WHEN BETWEEN 2 AND 3
THEN 'true'
ELSE 'false'
END
我收到一个错误:
消息 156,级别 15,状态 1
关键字“BETWEEN”附近的语法不正确
【问题讨论】:
标签:
sql
sql-server
select
case
between
【解决方案1】:
CASE expr WHEN val THEN ... 仅适用于相等检查,不适用于BETWEEN 等更复杂的条件。在你的罐子里,你需要使用像CASE WHEN val BETWEEN ... THEN ...这样的构造:
SELECT CASE WHEN @x - @y BETWEEN 2 AND 3 THEN 'true' ELSE 'false' END
或者,您可以使用:
SELECT CASE @x - @y
WHEN 2 THEN 'true'
WHEN 3 THEN 'true'
ELSE 'false'
END
【解决方案2】:
SELECT CASE WHEN @x - @y BETWEEN 2 AND 3
THEN 'true'
ELSE 'false'
END