SQL语句中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.
SQL语句中case函数的更多相关文章
- Oracle中,利用sql语句中的函数实现保留两位小数和四舍五入保留两位小数
Oracle中,利用sql语句中的函数实现保留两位小数和四舍五入保留两位小数: select trunc(1.23856789,2) from dual round(m,n) 可以四舍五入 trunc ...
- 关于SQL语句中SUM函数返回NULL的解决办法
SUM 是SQL语句中的标准求和函数,如果没有符合条件的记录,那么SUM函数会返回NULL. 但多数情况下,我们希望如果没有符合条件记录的情况下,我们希望它返回0,而不是NULL,那么我们可以使用例如 ...
- SQL语句中case,when,then的用法
用法如下bai: 复制代码 SELECT s.s_id, s.s_name, s.s_sex, CASE WHENs.s_sex='1'THEN'男' WHENs.s_sex='2'THEN'女' E ...
- sql语句中开窗函数的使用
开窗函数主要分为2类: 1.排序开窗函数: rank() over(partition by xxx order by yyy) //各分区按照yyy字段排序,如果yyy字段值一样,则rank值一样, ...
- 数据库学习(三) sql语句中添加函数 to_char,round,连接符||
** to char 是把日期或数字转换为字符串 to date 是把字符串转换为数据库中得日期类型 参考资料:https://www.cnblogs.com/hllnj2008/p/533296 ...
- Oracle的sql语句中case关键字的用法 & 单双引号的使用
关于sql中单引号和双引号的使用,来一点说明: 1. 查询列的别名如果含有汉字或者特殊字符(如以'_'开头),需要用双引号引起来.而且只能用双引号,单引号是不可以的. 2. 如果想让某列返回固定的值, ...
- SQL语句中count(1)count(*)count(字段)用法的区别
SQL语句中count(1)count(*)count(字段)用法的区别 在SQL语句中count函数是最常用的函数之一,count函数是用来统计表中记录数的一个函数, 一. count(1)和cou ...
- SQL语句中count(1)count(*)count(字段)用法的区别(转)
SQL语句中count(1)count(*)count(字段)用法的区别 在SQL语句中count函数是最常用的函数之一,count函数是用来统计表中记录数的一个函数, 一. count(1)和cou ...
- sql 语句中使用条件判断case then else end
sql 语句中使用条件判断case then else end范例: SELECT les.[nLessonNo] FROM BS_Lesson AS les WHERE les.[sClassCod ...
随机推荐
- kafka的相关操作脚本
总结最近用到的kafka相关命令和脚本. 1.创建Topic./kafka-topics.sh --zookeeper cc13-141:2182 --topic mytopic --replicat ...
- Python 爬虫实战
图片爬虫实战 链接爬虫实战 糗事百科爬虫实战 微信爬虫实战 多线程爬虫实战
- 第七篇:几个经典的TCP通信函数
前言 在TCP通信中要使用到几个非常经典的函数,本文将对这几个函数进行一个简短的使用说明. socket()函数 函数作用:创建一个网际字节流套接字 包含头文件:sys/socket.h ( 后面几个 ...
- 电脑CPU的发展史(转)
Intel于1971年发售了自己的第一款4位微处理器,设计与ROM 4001,RAM 4002和移位寄存器4003配合工作.其中4004自身负责运算,其它部分则是使CPU正常工作的重要组成.大部分40 ...
- Android 使用WebView显示网页
构建WebView就可以显示Web信息.因为我觉得这里会讲述很多方式来实现WebView,所以我决定为每一种方式创建一个对应的Activity,MainActivity通过Button可以点击进入对应 ...
- java基础----->TCP和UDP套接字编程
这里简单的总结一下TCP和UDP编程的写法,另外涉及到HttpUrlConnection的用法 . TCP套接字 一.项目的流程如下说明: .客户输入一行字符,通过其套接字发送到服务器. .服务器从其 ...
- Linux命令行常用光标移动快捷键
Linux 命令行快捷键 涉及在Linux命令行下进行快速移动光标.命令编辑.编辑后执行历史命令.Bang(!)命令.控制命令等.让basher更有效率. 常用 ctrl+左右键:在单词之间跳转 ct ...
- npm更新到最新版本
命令行运行: npm install -g npm
- Shell脚步之监控iostat数据
在性能测试中,进行iostat监控数据显示太不美观,看起来很痛苦,如下图 为了显示美观,写个shell脚本进行改造,如下: #! /bin/bash interval= ]; then interva ...
- ListView之EmptyView
From:http://blog.csdn.net/xiangqiao123/article/details/17994099 继承ListActivity比较方便 最新开发一个应用程序,需要用到当L ...