使用大于和小于比较搜索的 CASE 语句
Posted
技术标签:
【中文标题】使用大于和小于比较搜索的 CASE 语句【英文标题】:Searched CASE Statement with Greater Than and Less Than Comparison 【发布时间】:2020-03-27 16:21:51 【问题描述】:我有一个很大的计算,它会给出数值,需要比较大于和小于
CASE big_expression
WHEN > 0 AND <5 THEN 'Less Than 5 Days'
WHEN > 5 AND <20 THEN 'Between 5 and 20 Days'
-
可以这样做还是每次比较都需要用到表达式
【问题讨论】:
很遗憾,无法完成。如果big_expression
真的很大,您可以计算它并在子查询中为其命名,然后在外部查询中使用CASE
表达式。
还有一些注意事项... (1) case statement 只存在于 PL/SQL 中;你所拥有的是一个案例表达式。 (2) big_expression
可以 0。 (3) 如果big_expression
正好是 5 怎么办? (4) 通常你会写:case when big_expression > 20 then 'More than 20 days' when big_expression >= 5 then 'Between 5 and 20 days' else 'Less than 5 days' end
。比较(在WHEN
条件下)在第一个为真时立即停止,因此如果您这样编写,您将节省编码。
【参考方案1】:
你可以用 CTE 来做同样的事情
WITH data
AS (SELECT 1 + 2 + 5 + 9 AS big_exp
FROM dual)
SELECT CASE
WHEN big_exp > 0
AND big_exp < 5 THEN 'Less Than 5 Days'
WHEN big_exp > 5
AND big_exp < 20 THEN 'Between 5 and 20 Days'
ELSE 'Greater than 20 days'
END
FROM data
【讨论】:
以上是关于使用大于和小于比较搜索的 CASE 语句的主要内容,如果未能解决你的问题,请参考以下文章