首页 > 数据库 >【ORCAL】oracle 数据库中case when 语句的用法详解

【ORCAL】oracle 数据库中case when 语句的用法详解

时间:2023-10-18 22:26:48浏览次数:46  
标签:case salary END when WHEN CASE 用法 oracle sex

 

今天向大家介绍oracle数据库中 case when 语句的用法详解,主要包括它的用法详解、使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值。

CASE WHEN 表达式有两种形式

 1 --简单Case函数  
 2 
 3 CASE sex  
 4 WHEN '1' THEN '男'  
 5 WHEN '2' THEN '女'  
 6 ELSE '其他' END  
 7 
 8 --Case搜索函数  
 9 
10 CASE
11 WHEN sex = '1' THEN '男'  
12 WHEN sex = '2' THEN '女'  
13 ELSE '其他' END 
View Code

 

CASE WHEN 在语句中不同位置的用法

1.在SELECT后面的用法(目标显示结果中)

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;

注:此语句表示查询学生信息表中各年级的男生和女生数,并按年级分组(数据库中性别是以1和2表示)

2.在WHERE 后 用法(作为条件进行)

 1 SELECT T2.*, T1.*
 2    FROM T1, T2
 3   WHERE (CASE WHEN T2.COMPARE_TYPE = 'A' AND
 4                    T1.SOME_TYPE LIKE 'NOTHING%'
 5                 THEN 1
 6               WHEN T2.COMPARE_TYPE != 'A' AND
 7                    T1.SOME_TYPE NOT LIKE 'NOTHING%'
 8                 THEN 1
 9               ELSE 0
10            END) = 1

注:

3.GROUP BY 后的用法(分组条件中)

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;  

 

 

 

标签:case,salary,END,when,WHEN,CASE,用法,oracle,sex
From: https://www.cnblogs.com/lsxs-wy/p/17773463.html

相关文章

  • datax从oracle到mysql数据传输
    datax进行数据迁移: 所需配置:1、服务器:windows/linux(本人使用的本地windows)         2、环境:python2.6.3  和java.11.0.20(本人使用)         3、datax(https://github.com/taosdata/DataX)以上下载完成后可以通过下面命令来查看是否下载......
  • oracle TDE使用
    环境:OS:Centos6DB:11.2.0.43节点组成的rac环境 1.先要创建一个"wallet钱包",这个钱包里面保存着密钥,Oracle就是通过这个密钥对列进行加密和解密的.在其中一个节点上操作,我这里是在节点1上操作su-oracle[oracle@rac01~]$mkdir$ORACLE_BASE/wallet[oracle@rac01~]$c......
  • Go - Creating Subtests to Have Finer Control Over Groups of Test Cases
    Problem: Youwanttocreatesubtestswithinatestfunctiontohavefinercontrolovertestcases.Solution: Usethet.Runfunctiontocreatesubtestswithinatestfunction.Subtestsextendtheflexibilityoftestfunctionstoanotherleveldown. When......
  • 用system账户修改过Oracle密码期限,改成unlimited 后来新建的账户的密码期限也是unlimi
    https://www.cnblogs.com/hooly/p/14171716.htmlhttps://blog.csdn.net/wang13145/article/details/106660266用system账户修改过Oracle密码期限,改成unlimited后来新建的账户的密码期限也是unlimited吗?......
  • 小景的Dba之路--Oracle用exp导出dmp文件很慢
    小景最近在系统压测相关的工作,其中涉及了Oracle数据库相关的知识,之前考的OCP证书也在此地起了作用。今天的问题是:Oracle用exp导出dmp文件很慢,究竟是什么原因,具体的解决方案都有哪些呢? 下面我逐一来说下,首先列举了一些常见的原因:1.数据量大:如果你要导出的数据库包含大量数据,导......
  • 运算符 列名*1.1 case when... then ..when.. then ..else.. end
    selectENAMEas'姓名',SALas'原始工资',(SAL*1.1)as'涨工资10%'fromempwherejob='MANAGER';  #经理涨薪%10,销售涨薪%50其余不变需要使用casewhenthenwhenthenelseendselectename,job,salas'原来的薪水'......
  • cube.js oracle 新版本npm 包支持
    cube.js目前来说是越来越复杂了(不是代码多复杂,而且融合了不少三方语言,python,rust,nodeaddonjava)如果网络不是很好的情况下编译cube.js是极其痛苦的,而且不少依赖问题,cube.js实际上很早就支持oracle,但是今天oracle比较给力提供了基于node的原生实现这样node系统集成......
  • Oracle 中 decode 函数用法
    decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值)Decode函数与一系列嵌套的IF-THEN-ELSE语句相似。该函数的含义如下:IF条件=值1THENRETURN(翻译值1)ELSIF条件=值2THENRETURN(翻译值2)......ELSIF条件=值nTHENRETURN(翻译值n)......
  • 资源消耗类应急处理方法oracle
    1.高资源消耗进程应急处理现象描述某个oracleprocessCPU使用率非常高。某个oracleprocessMEM使用率非常高。影响因素暂无解决方法1、使用TOPAS观察哪个进程CPU使用率高,找出相关进程号,通过以下命令定位数据库SID号.Selectsid,sql_id,event,statusfromv$sessionwherepaddri......
  • Oracle中如何根据查询sql片段定位查询客户端主机地址
    --1.根据sql片段获取sql_id--select*fromv$sqlwherelast_active_time>sysdateandsql_textlike'%ZL0204_03r%';selectsql_id,modulefromv$sqlwherelast_active_time>sysdateandsql_textlike'%ZL0204_03%';--2.根据sql_id查询sid......