`

Oracle Case

阅读更多
1.CASE WHEN表达式有两种形式

--简单Case函数 

CASE sex 
WHEN '1' THEN '男' 
WHEN '2' THEN '女' 
ELSE '其他' END 

--Case搜索函数 

CASE
WHEN sex = '1' THEN '男' 
WHEN sex = '2' THEN '女' 
ELSE '其他' END
2. CASE WHEN 在语句中不同位置的用法

2.1 SELECT CASE WHEN 用法


SELECT   grade, COUNT (CASE WHEN sex = 1 THEN 1      /*sex 1为男生,2位女生*/
                       ELSE NULL
                       END) 男生数,
                COUNT (CASE WHEN sex = 2 THEN 1
                       ELSE NULL
                       END) 女生数
    FROM students GROUP BY grade;



2.3 WHERE CASE WHEN 用法


SELECT T2.*, T1.*
   FROM T1, T2
  WHERE (CASE WHEN T2.COMPARE_TYPE = 'A' AND
                   T1.SOME_TYPE LIKE 'NOTHING%'
                THEN 1
              WHEN T2.COMPARE_TYPE != 'A' AND
                   T1.SOME_TYPE NOT LIKE 'NOTHING%'
                THEN 1
              ELSE 0
           END) = 1



2.4 GROUP BY CASE WHEN 用法


SELECT 
CASE WHEN salary <= 500 THEN '1' 
WHEN salary > 500 AND salary <= 600  THEN '2' 
WHEN salary > 600 AND salary <= 800  THEN '3' 
WHEN salary > 800 AND salary <= 1000 THEN '4' 
ELSE NULL END salary_class, -- 别名命名
COUNT(*) 
FROM    Table_A 
GROUP BY 
CASE WHEN salary <= 500 THEN '1' 
WHEN salary > 500 AND salary <= 600  THEN '2' 
WHEN salary > 600 AND salary <= 800  THEN '3' 
WHEN salary > 800 AND salary <= 1000 THEN '4' 
ELSE NULL END;

3.关于IF-THEN-ELSE的其他实现

3.1 DECODE() 函数

select decode(sex, 'M', 'Male', 'F', 'Female', 'Unknown')
from   employees;
貌似只有Oracle提供该函数,而且不支持ANSI SQL,语法上也没CASE WHEN清晰,个人不推荐使用。


3.2 在WHERE中特殊实现

SELECT T2.*, T1.*
   FROM T1, T2
  WHERE (T2.COMPARE_TYPE = 'A' AND T1.SOME_TYPE LIKE 'NOTHING%')
         OR
        (T2.COMPARE_TYPE != 'A' AND T1.SOME_TYPE NOT LIKE 'NOTHING%')
这种方法也是在特殊情况下使用,要多注意逻辑,不要弄错。
分享到:
评论

相关推荐

    oracle case语句的介绍

    ### Oracle CASE 语句介绍及应用案例 #### 一、Oracle CASE 语句概述 在 Oracle 数据库中,CASE 语句是一种非常实用且灵活的条件判断表达式,它可以用于根据不同的条件返回不同的值。CASE 语句可以分为两种类型:...

    casewhen多条件oracle-casewhen(casewhen同时满足多条件).pdf

    Oracle CASE WHEN 多条件语句详解 CASE WHEN 语句是 SQL 中的一种条件语句,用于实现多个条件的判断和执行。它可以用来代替 IF 语句和 SWITCH 语句,在 Oracle 数据库中尤其常用。 CASE WHEN 语句的基本语法是: `...

    oracle where case when where后面跟case when

    在Oracle数据库中,`WHERE`子句是SQL查询语句的一部分,用于指定查询条件,而`CASE WHEN`语句则是一种条件表达式,允许我们基于不同的条件返回不同的值。将`CASE WHEN`嵌套在`WHERE`子句中,可以实现更复杂的逻辑...

    Oracle case函数使用介绍

    Oracle CASE 函数是一种在 SQL 查询中进行条件判断的表达式,它允许你在同一查询中根据不同的条件设置不同的返回值。这个函数在处理复杂的数据转换和分析时非常有用,尤其是在需要根据特定条件设置列的值时。以下是...

    oracle case when 语句的用法详解

    1. CASE WHEN 表达式有两种形式 代码如下:–简单Case函数 CASE sex WHEN ‘1’ THEN ‘男’ WHEN ‘2’ THEN ‘女’ ELSE ‘其他’ END –Case搜索函数 CASEWHEN sex = ‘1’ THEN ‘男’ WHEN sex = ‘2’ ...

    金融道德关于oracle case的

    Oracle对PeopleSoft的敌意收购就是一个典型的例子,揭示了企业在追求竞争优势时如何在道德与利益之间进行权衡。 Oracle最初以每股16美元的价格提出收购,几乎没有溢价,这似乎是对PeopleSoft的一种打击。Oracle可能...

    Oracle_case_when_用法

    ### Oracle CASE WHEN 用法详解 #### 一、概述 在 Oracle 数据库中,`CASE WHEN` 表达式提供了一种在 SQL 查询中实现条件判断的方法,这使得开发人员能够在不使用 PL/SQL 的情况下编写更为灵活和复杂的查询语句。`...

    case乱码解决

    mysql 中case when 遇到乱码解决。查询语句中含有case引起中文乱码解决方法

    Oracle GoldenGate Case Study

    本文将基于“Oracle GoldenGate Case Study”的标题和描述,深入探讨GoldenGate如何解决异构数据库整合难题,以及它在现代企业数据管理中的关键作用。 ### 异构数据库整合:GoldenGate的解决方案 在当今复杂的IT...

    Linux 下设置oracle 10g 自动启动服务

    ### Linux 下设置 Oracle 10g 自动启动服务 #### 方法一:通过配置 `/etc/rc.d/init.d/` 目录下的服务文件实现自动启动 1. **创建服务文件** 在 `/etc/rc.d/init.d/` 目录下创建一个名为 `oracle10g` 的文件,并...

    ORACLE多条件统计查询的简单方法

    在Oracle中,`CASE`语句的基本结构如下: ```sql CASE WHEN condition1 THEN result1 WHEN condition2 THEN result2 ... ELSE default_result END ``` 在这个结构中,`WHEN`后面的条件被逐一检查,如果满足...

    Oracle用decode函数或CASE-WHEN实现自定义排序

    在Oracle数据库中,进行SQL查询时,我们通常使用`ORDER BY`子句对查询结果进行排序。然而,标准的`ORDER BY`语句遵循数据库默认的排序规则,这可能不满足某些特定的需求。例如,当你需要按照特定顺序(如自定义的...

    一次简单的Oracle恢复Case实战记录

    Oracle数据库恢复是数据库管理员在遇到数据损坏或系统故障时必须掌握的关键技能。在这个具体的案例中,我们看到一个数据库由于硬盘故障和存储系统断电而无法正常打开,导致一系列的内部错误,如ORA-00600。这些错误...

    Oracle big data case - Oracle No sql 实战

    Oracle big data case - Oracle No sql 实战。 How to access NoSQL Data from Oracle Database in Hadoop platform

    [数据库] Oracle使用CASE判断解决多值问题1

    【Oracle使用CASE判断解决多值问题】 在Oracle数据库中,面对多值判断的场景,我们经常需要对数据进行复杂的逻辑处理。在这个问题中,我们有一个专业表ZY_TAB,包含专业名称(ZY_NAME),专业代码(ZY_CODE),专业类型...

    Centos 7.4 配置 oracle 自启动

    case "$1" in start) # Oracle listener and instance startup su $ORA_OWNR -lc "$ORACLE_HOME/bin/dbstart $ORACLE_HOME" echo "Oracle Start Successful! OK." ;; stop) # Oracle listener and instance ...

Global site tag (gtag.js) - Google Analytics