Oracle的case函数
转载自:原文
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函数相关推荐
- oracle函数 case,oracle的case函数和case控制结构 (摘)
oracle的case函数和case控制结构 =========================================================== 作者: zhouwf0726(ht ...
- oracle之case函数(case when then else end)用法
在写项目时,会遇到有字典项的业务,例如数字1代表男,数字2代表女,用做展示的时候,遇到对应数字就展示中文对应的男or女. 现在数据库创建一张表(message_mid),字典项的字段是state:0代 ...
- oracle实现mysql的if_oracle中decode函数 VS mysql中的if函数和case函数
oracle中有decode函数,如下: select sum(decode(sex,'男',0,1)) 男生数 from school: 统计男生数目,含义为:decode()中sex字段为男时,用 ...
- oracle判断空值的函数nvl2,Oracle nvl、nvl2、nullif、decode、case函数详解
1.NVL函数 nvl(expr1,expr2),如果expr1为空,则返回expr2: 2.NVL2函数 nvl2(expr1,expr2,expr3),如果expr1为空,则返回expr3,否则返 ...
- Oracle HowTo:如何使用Oracle case函数
通过实例简要介绍case函数的用法. 1.创建测试表: DROP SEQUENCE student_sequence; CREATE SEQUENCE student_sequence START W ...
- oracle case函数用法,ORACLE CASE WHEN用法
祝大家新年快乐,有任何问题可与我联系: ORACLE CASE WHEN其实就相当于我们程序当中的IF语句,他的语法结构是: CASE WHEN "条件表达式" THEN &quo ...
- ORACLE CASE函数
Case具有两种格式.简单Case函数和Case搜索函数. --简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END ...
- oracle的使用case函数列的别名问题
当case函数列不使用别名的时候,末尾的end case 中case可以加可以不加, 但是当这一列要有别名的时候,就不能加case. 例如 SELECT ORDER_ID, CASE WHEN R ...
- 先随机后排序的oracle,Oracle用decode函数或CASE-WHEN实现自定义排序
Oracle用decode函数或CASE-WHEN实现自定义排序 1 问题 对SQL排序,只要在order by后面加字段就可以了,可以通过加desc或asc来选择降序或升序.但排序规则是默认的,数字 ...
最新文章
- python勾股定理_Python学习第128课——在Python中实现醉汉随机游走
- python爬虫百度百科-如何入门 Python 爬虫?
- git http仓库账号密码缓存至本地:不用每次git push都需要输入密码的方法(类似于windows的凭据管理)
- python好用的模块和包_Python模块和包详细讲解与实例分析
- mysql 坚向变横向_(排班表一)使用SQL语句使数据从坚向排列转化成横向排列
- 16岁高中生的「卷」,用13000+行代码,从头写了一个C++机器学习库
- AOS V0.8 发布,JavaEE 应用基础平台
- 数仓数据分层(ODS DWD DWS ADS)
- 原创:2016.4.25-2016.5.1 C# informal essay and tittle_tattle
- 禁用Win7自动更新后的重启提示
- 7. 稀疏表示之OMP,SOMP算法及openCV实现
- 计算机应用基础教程学什么,[电脑基础知识]计算机应用基础教程学习.ppt
- 汽车UDS诊断详解及Vector相关工具链使用说明——总述
- easyRobot工业机器人系统
- 如何用photoshop做24色环_【PS教你快速绘制超漂亮的色环】 24色环图绘制
- Python 自动化测试实战
- laravel 项目笔记之SendCloud 驱动
- git send-email 时unknown AUTH解决方法
- ogr 缓冲区_OGR几何关系与操作
- sudo spctl --master-disable