sql - 您如何使用 Oracle Case Statement 测试不等式

标签 sql oracle case-statement

这工作正常:

    select 
      case (1+2) -- (or_some_more_complicated_formula_yielding_a_numeric_result)
        when 200 then '200'
        when 100 then '100'
        else          'other'
      end hi_med_low
    from dual  ;

但我需要做更多这样的事情:
    select 
      case (1+2) -- (or_some_more_complicated_formula_yielding_a_numeric_result)
        when greater than 200 then 'high'
        when less than    100 then 'low'
        else                       'medium'
      end hi_med_low
    from dual ;

建议?

最佳答案

case 支持评估 bool 条件的语法。它不像您希望的那样干净,因为您需要重新编写每个表达式,但它可以完成工作:

select 
  case
    when (1+2) > 200 then 'high'
    when (1+2) < 100 then 'low'
    else                  'medium'
  end hi_med_low
from dual ;

一种可能的缓解措施是对公式使用子查询,因此您只需编写一次:
select 
  case
    when formula > 200 then 'high'
    when formula < 100 then 'low'
    else                    'medium'
  end hi_med_low
from (select (1+2) AS formula from dual);

关于sql - 您如何使用 Oracle Case Statement 测试不等式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23894997/

相关文章:

java - JOOQ 中的WITH 语句?

sql - 如何将包含列表的变量传递给动态 SQL 查询?

python - 数据库 API : How to deal with multi where condition in Python

sql-server - SQL Case 语句会失败吗?

sql - 索引基本上是表的副本吗?

c# - 调用时SSIS包将不会执行

java - Spring JDBC 支持和大型数据集

c# - pl/sql 查询和 .net 的奇怪行为

entity-framework - EF Left 在两个属性上加入一个表并结合一个 case 语句

string - SQL 比较字符串