转载自:原文

case函数,严格的意义上来讲case函数已经试流程控制语句了,不是简单意义上的函数,不过为了方便,很多人将case函数称为流程控制函数。

case函数的一般有两种用法:1.case expression

when value1 then returnvalue1

when value2 then returnvalue2

when value3 then returnvalue3

else defaultvalue

end

                                         上述的第一种用法就是:case函数对表达式expression进行测试,如果expression等于value1则返回returnvalue1.依次类推如果不符合条件的所有的when条件,就返回默认值defaultvalue。

可见case函数跟普通的switch case语句非常类似,使用case函数我们可以实现复杂的业务逻辑,下面的sql语句就是就是用来判断是好孩子,我们偏爱tom所以我们认为他是好孩子,jack是坏孩子,其他的都是普通孩子

select fname, (

case fname

when ‘tom’ then ‘好孩子’

when ‘jack’ then ‘坏孩子’

else ‘普通孩子’

end

) as isgoodchild

from T_person

2:case函数在做报表的时候非常有用,比如T_customer表中的flevel字段是整数类型,它记录着客户的级别,如果是1是VIP用户,如果是2就是高级用户,如果是3就是普通用户,在制作报表的时候不应该把1,2,3这样的数字显示在报表中而应该显示它的文字,这里就可以用case函数来实现

select fname,

(

case flevel

when 1 then ‘VIP客户’

when 2 then ‘高级客户’

when 3 then ‘普通客户’

else ‘客户类型错误’

end

) as flevelName

from T_customer

用法二:

上面的case用法只能用来实现简单的等于的逻辑判断,要实现“如果年龄小于18则返回未成年人”否则返回“成年人”是无法完成的,这就是需要case的第二种用法了。

case

when condition1 then returnvalue1

when condition2 then returnvalue2

when condition3 then returnvalue3

else defaultvalue

end

解释:condition1,condition2,condition3为条件表达式。case函数对各个表达式从前向后进行测试。如果条件1为真的时候就返回条件1对应的值returnvalue1,否则如果condition2为真的时候就返回returnvalue2…以此类推 如果都不符合条件就返回默认值defaultvalue.这种用法没有只能对一个表达式进行判断,因此使用起来更加灵活,比如下面的sql语句判断一个人的体重是不是正常,如果体重大于50偏重,小于40偏轻,介于40到50之间正常。

select

fname,fweight,(

case

when fweight <40 then ‘thin’

when fweight > 50 then ‘fat’

else ‘ok’

end

) as isnormal

from T_person.

Oracle的case函数相关推荐

  1. oracle函数 case,oracle的case函数和case控制结构 (摘)

    oracle的case函数和case控制结构 =========================================================== 作者: zhouwf0726(ht ...

  2. oracle之case函数(case when then else end)用法

    在写项目时,会遇到有字典项的业务,例如数字1代表男,数字2代表女,用做展示的时候,遇到对应数字就展示中文对应的男or女. 现在数据库创建一张表(message_mid),字典项的字段是state:0代 ...

  3. oracle实现mysql的if_oracle中decode函数 VS mysql中的if函数和case函数

    oracle中有decode函数,如下: select sum(decode(sex,'男',0,1)) 男生数 from school: 统计男生数目,含义为:decode()中sex字段为男时,用 ...

  4. oracle判断空值的函数nvl2,Oracle nvl、nvl2、nullif、decode、case函数详解

    1.NVL函数 nvl(expr1,expr2),如果expr1为空,则返回expr2: 2.NVL2函数 nvl2(expr1,expr2,expr3),如果expr1为空,则返回expr3,否则返 ...

  5. Oracle HowTo:如何使用Oracle case函数

    通过实例简要介绍case函数的用法. 1.创建测试表: DROP SEQUENCE student_sequence; CREATE SEQUENCE student_sequence START W ...

  6. oracle case函数用法,ORACLE CASE WHEN用法

    祝大家新年快乐,有任何问题可与我联系: ORACLE CASE WHEN其实就相当于我们程序当中的IF语句,他的语法结构是: CASE WHEN "条件表达式" THEN &quo ...

  7. ORACLE CASE函数

    Case具有两种格式.简单Case函数和Case搜索函数. --简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END ...

  8. oracle的使用case函数列的别名问题

    当case函数列不使用别名的时候,末尾的end case 中case可以加可以不加, 但是当这一列要有别名的时候,就不能加case. 例如 SELECT  ORDER_ID, CASE  WHEN R ...

  9. 先随机后排序的oracle,Oracle用decode函数或CASE-WHEN实现自定义排序

    Oracle用decode函数或CASE-WHEN实现自定义排序 1 问题 对SQL排序,只要在order by后面加字段就可以了,可以通过加desc或asc来选择降序或升序.但排序规则是默认的,数字 ...

最新文章

  1. python勾股定理_Python学习第128课——在Python中实现醉汉随机游走
  2. python爬虫百度百科-如何入门 Python 爬虫?
  3. git http仓库账号密码缓存至本地:不用每次git push都需要输入密码的方法(类似于windows的凭据管理)
  4. python好用的模块和包_Python模块和包详细讲解与实例分析
  5. mysql 坚向变横向_(排班表一)使用SQL语句使数据从坚向排列转化成横向排列
  6. 16岁高中生的「卷」,用13000+行代码,从头写了一个C++机器学习库
  7. AOS V0.8 发布,JavaEE 应用基础平台
  8. 数仓数据分层(ODS DWD DWS ADS)
  9. 原创:2016.4.25-2016.5.1 C# informal essay and tittle_tattle
  10. 禁用Win7自动更新后的重启提示
  11. 7. 稀疏表示之OMP,SOMP算法及openCV实现
  12. 计算机应用基础教程学什么,[电脑基础知识]计算机应用基础教程学习.ppt
  13. 汽车UDS诊断详解及Vector相关工具链使用说明——总述
  14. easyRobot工业机器人系统
  15. 如何用photoshop做24色环_【PS教你快速绘制超漂亮的色环】 24色环图绘制
  16. Python 自动化测试实战
  17. laravel 项目笔记之SendCloud 驱动
  18. git send-email 时unknown AUTH解决方法
  19. ogr 缓冲区_OGR几何关系与操作
  20. sudo spctl --master-disable

热门文章

  1. 3G视频与智能调度开拓公交新时代
  2. python输入三角形的三条边_牛鹭学院:学员笔记|Python: 输入三条边,判断是否可以成为三角形...
  3. 时间复杂度和空间复杂度详解带例题(精)
  4. 解决数码管残影问题,数码管总是会显示上一位数字的残影
  5. 2018 蓝桥杯省赛 B 组模拟赛(一)
  6. 短视频点赞平台美化整修最终版【修复后台错误+详细安装教程】
  7. python刷网_Python制作刷网页流量工具的代码实例
  8. mRemote 中VNC的使用
  9. 数据安全建设过程中怎样处理数据环境安全
  10. 模块使用——震动开关模块