博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
sqlServer,oracle中case关键字的用法
阅读量:6799 次
发布时间:2019-06-26

本文共 1396 字,大约阅读时间需要 4 分钟。

一直在使用SQL Server,现在学习Oracle时发现SQL Server和Oracle中case语句有点小小的差别,不过两种case写法是一样的。 在写SQL时,有时要根据已有的列值构造新的列值,这时就要用到的SQL中的case关键字。如下所示查询负责人信息表(T_MS_CustomerCrmInfoDutyPerson)中的是否是主要负责人(isMainDuty)字段,但是这个字段的值是以枚举的方式存储的,存储0表示是否,1表示是,否则表示未判断。这时直接查询出的值不是自己需要的值,可以用case关键字重新构建列值。
select case          when cfdutystate=0 then '否'          when cfdutystate=1 then '是'          else null       end as isMainDutyfrom T_MS_CustomerCrmInfoDutyPerson
注意点: 1,以case开头,以end结尾 2,when后跟条件分支中,then后为显示结果 3,else为除此之外的默认情况,类似于java的switch case的default,可以不加 4,Oracle中end后跟别名或者sqlserver中语法如下: isMainDuty =case when cfdutystate=0 then '否' when cfdutystate=1 then '是' else null end 除此之外,case也可以用到group by语句中以根据需要实现灵活的分组操作,如下所示的列子:
SELECT    CASE        WHEN price IS NULL THEN 'Unpriced'        WHEN price < 10 THEN 'Bargain'        WHEN price BETWEEN 10 and 20 THEN 'Average'        ELSE 'Gift to impress relatives'    END AS Range,    TitleFROM titlesGROUP BY    CASE        WHEN price IS NULL THEN 'Unpriced'        WHEN price < 10 THEN 'Bargain'        WHEN price BETWEEN 10 and 20 THEN 'Average'        ELSE 'Gift to impress relatives'    END,    TitleORDER BY    CASE        WHEN price IS NULL THEN 'Unpriced'        WHEN price < 10 THEN 'Bargain'        WHEN price BETWEEN 10 and 20 THEN 'Average'        ELSE 'Gift to impress relatives'    END,    Title

转载于:https://www.cnblogs.com/wanyakun/archive/2011/06/30/3403261.html

你可能感兴趣的文章
面试1
查看>>
【Java基础】4、java中的内部类
查看>>
Mac ssh
查看>>
h5 喜帖
查看>>
全局修改默认字体,通过反射也能做到
查看>>
直方图
查看>>
LeetCode: 【L4】N-Queens 解题报告
查看>>
首届HTML5原创游戏大赛将于6月10日拉开序幕
查看>>
8个对于Web设计和开发人员非常有用的在线工具
查看>>
iOS - (简单平移动画/弹出View的使用)
查看>>
Bloom Filter概念和原理
查看>>
SPOJ PGCD 4491. Primes in GCD Table && BZOJ 2820 YY的GCD (莫比乌斯反演)
查看>>
STL学习系列八:Set和multiset容器
查看>>
入门案例
查看>>
C++ 虚函数表解析(转)
查看>>
八数码问题及A*算法
查看>>
iOS:解决动画加阴影卡的问题
查看>>
PHP数组读取的循环操作
查看>>
[置顶] Oracle 11g Undo 表空间切换
查看>>
Andriod 环境配置以及第一个Android Application Project
查看>>