首页 > 数据库 >Oracle CASE WHEN 用法介绍

Oracle CASE WHEN 用法介绍

时间:2023-04-20 12:03:34浏览次数:48  
标签:CASE WHEN T2 T1 Oracle sex TYPE



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

 



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

 


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

 


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%')



这种方法也是在特殊情况下使用,要多注意逻辑,不要弄错。

标签:CASE,WHEN,T2,T1,Oracle,sex,TYPE
From: https://blog.51cto.com/u_16080829/6209402

相关文章

  • Oracle MySQL Server 拒绝服务漏洞(CVE-2023-21912) 修复
    CVE编号公告标题和摘要最高严重等级受影响的软件CVE-2023-21912OracleMySQLServer拒绝服务漏洞未经身份验证的远程攻击者可通过MySQL协议网络访问MySQLServer,成功利用此漏洞可导致目标MySQLServer挂起或频繁重复崩溃,造成拒绝服务攻击重要MySQLServer<=5.7.41......
  • How to Configure SSL/TLS on ORACLE RAC
    GoalThisdocumentwilldemonstratethestepsrequiredtoconfigureSSL/TLSonRACorSIHA.Instructionisbyexampleandalsoshowsvariousmethodstocheckthestateoftheconfiguration. "SSL"inthisdocumentreferstoeitherSSLorTLSpr......
  • oracle获取上传文件类型分类
    如下selectx.*,count(1)from(--selectsubstr(t.attachmentpath,-3,)vfromCOMM_ATTACHMENTtselectsubstr(t.attachmentpath,instr(t.attachmentpath,'.',-1)+1)vfromCOMM_ATTACHMENTt)xgroupbyv;数据源举例:\project\2018\11......
  • Oracle rac haip作用
    11GR2版本之后,私网之间的通讯开始使用haip进行通讯,Oracle集群启动时会在每个私网网卡上绑定一个169.254网段的ip地址,每一个网卡都同时承担实例之间的通讯,当其中一个私网网卡出现问题,该私网网卡上的haip立即漂移到状态正常的网卡上,并继续提供服务。在Oraclerac核心技术讲解这本书......
  • 模拟oracle死锁并确认相关表以及行等信息
    文档课题:模拟oracle死锁并确认相关表以及行等信息.数据库:oracle11.2.0.4应用场景:开发反馈某时间段出现死锁现象,dba需提供造成死锁的相关信息,如具体哪张表、哪条语句、哪行数据等信息.1、模拟异常1.1、建测试表--创建测试表t1和t2.SYS@orcl>connscott/tiger;Connected.SC......
  • oracle无监听
    转载:https://blog.csdn.net/qq_34621658/article/details/98939526只执行前两步就可以管理员登录用户名:system口令:orcl数据库:Administrator:1521/oracle连接为:SYSTEM 注意:数据库Administrator是电脑本机用户名,不是这个的其修改为自己的用户名......
  • SQL Server和Oracle常用函数对比
    SQLServer和Oracle常用函数对比SQLServer和Oracle是大家经常用到的数据库,在此感谢热心网友总结出这些常用函数以供参考。数学函数1.绝对值S:selectabs(-1)valueO:selectabs(-1)valuefromdual2.取整(大)S:selectceiling(-1.001)valueO:......
  • Oracle使用expdp数据泵导出多张表
    由于需要导出的表数量较多,这里要用到include参数。一、exclude/include参数用法:   EXCLUDE=[object_type]:[name_clause],[object_type]:[name_clause]  -->排出特定对象   INCLUDE=[object_type]:[name_clause],[object_type]:[name_clause]  -->包含特定对象 ......
  • 报错解决:user.Case: (models.E020) The 'Case.check()' class method is currently ov
    Django在启动时报错,如下:user.Case:(models.E020)The'Case.check()'classmethodiscurrentlyoverriddenby<django.db.models.query_utils.DeferredAttributeobjectat0x0000020331E0AE20>.意思是说:在user.Case.check()在执行的过程中被【django.db.models.query_ut......
  • Oracle培训
    OracleOcp认证标志着可以管理大型数据库,或者能够开发可以部署到整个企业的强大应用。一个OCP工程师不仅仅可以从事DBA。DBA目前国内的需求量是非常大的,毕竟数据库管理在中国起步比较晚,发展快,自然前景也很好。最重要的是要精通一种数据库,熟悉或者了解其他数据库.另外DBA的待......