使用大于和小于比较搜索的 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 &gt; 20 then 'More than 20 days' when big_expression &gt;= 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 语句的主要内容,如果未能解决你的问题,请参考以下文章

逻辑判断-if语句/文件目录属性判断/case判断

php switch case 问题

条件语句

Shell脚本练习----条件语句(if case语句的应用)

常见的关系运算符(if else和case语句)

如何配置ibatis语句带小于号的