Oracle的case if else用法
转载出处:https://blog.csdn.net/shangboerds/article/details/41989283
经常有这类问题,比如性别的男女,一般在数据库中不存男女,而存数字0或1,1或2,查询出来展示的时候做转换。
CREATE TABLE USER_INFO
(
NAME VARCHAR2(20) NOT NULL, ---姓名
GENDER NUMBER(1,0), ---性别(1、男 2、女)
BIRTHDAY DATE ---生日
);
INSERT INTO USER_INFO VALUES ('张三', 1, DATE '2014-12-27');
INSERT INTO USER_INFO VALUES ('李四', 2, DATE '2014-12-27');
CASE使用案例 1 把 USER_INFO 表导出生成一个文件,要求性别为男或女,而不是1和2,怎么办?
SELECT
NAME,
CASE GENDER
WHEN 1 THEN '男'
ELSE '女'
END AS GENDER,
BIRTHDAY
FROM USER_INFO;
CASE使用案例 2 假设 USER_INFO 目前没有值,然后你往 USER_INFO 导入了一批数据,但是很不幸,错把男设置成为2,而把女设置成为1,现在要求你变换过来,怎么办?
方法1:利用第三个数据做中转
UPDATE USER_INFO SET GENDER=3 WHERE GENDER=2;
UPDATE USER_INFO SET GENDER=1 WHERE GENDER=3;
UPDATE USER_INFO SET GENDER=2 WHERE GENDER=1;
方法2:使用case语句
UPDATE USER_INFO SET GENDER=
(
CASE GENDER
WHEN 1 THEN 2
WHEN 2 THEN 1
ELSE GENDER
END
);
两者相比比,处理多的数据时是case语句效率更快,不容易出问题
CASE使用案例 3 假设让你把张三的生日更新成1949-10-1,李四的生日更新成1997-7-1等,类似这样的更新有很多。该怎么办呢?
大多人会用普通的update语句,为什么不试试用case语句呢,
UPDATE USER_INFO SET BIRTHDAY =
(
CASE NAME
WHEN '张三' THEN DATE '1949-10-1'
WHEN '李四' THEN DATE '1997-7-1'
ELSE BIRTHDAY
END
)
WHERE NAME in ('张三','李四');
然而,case语句有两种形式
1、SELECT
-- 简单 CASE 语句(Simple CASE)
CASE GENDER
WHEN 1 THEN '男'
ELSE '女'
END AS GENDER
FROM USER_INFO;
2、SELECT
-- 查询 CASE 语句(Searched CASE)
CASE
WHEN GENDER = 1 THEN '男'
ELSE '女'
END AS GENDER
FROM USER_INFO;
DECODE 函数
此外, Oracle 还提供了一个函数来达到和 CASE 语句相同的效果。
SELECT DECODE(GENDER, 1, '男', 2, '女', '未知') FROM USER_INFO;
Oracle的case if else用法相关推荐
- ORACLE CASE WHEN 及 SELECT CASE WHEN的用法
Case具有两种格式.简单Case函数和Case搜索函数. --简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END ...
- 转 ORACLE CASE WHEN 及 SELECT CASE WHEN的用法
原址如下: http://exceptioneye.iteye.com/blog/1197329 ORACLE CASE WHEN 及 SELECT CASE WHEN的用法 Case具有两种格式.简 ...
- Oracle的CASE语句和表达式
http://space.itpub.net/15203236/viewspace-534849 Oracle的CASE语句和表达式 上一篇 /下一篇 2009-01-09 23:19:46 / 天 ...
- bulk怎么使用oracle,oracle学习之bulk collect用法
通过bulk collect减少loop处理的开销,使用Bulk Collect提高Oracle查询效率 Oracle8i中首次引入了Bulk Collect特性,该特性可以让我们在PL/SQL中能使 ...
- Oracle中游标Cursor基本用法详解
这篇文章主要介绍了Oracle中游标Cursor基本用法详解,还是比较全面的,具有一定参考价值,需要的朋友可以了解下. 查询 SELECT语句用于从数据库中查询数据,当在PL/SQL中使用SELECT ...
- Oracle数据库中SQL语句用法(一)
Copyright © 2019 @Linyer. All Rights Reserved 下接Oracle数据库中SQL语句用法(二)[点击以查看] 目录 第1章:编写基本的SQL SELECT语句 ...
- oracle函数 case,oracle的case函数和case控制结构 (摘)
oracle的case函数和case控制结构 =========================================================== 作者: zhouwf0726(ht ...
- c语言 case语句用法,switch ... case语句的用法[组图]
switch ... case语句的用法[组图] 08-13栏目:技术 TAG:switch case语句 switch case语句 当情况大于或等于4种的时候就用switch ... case语 ...
- mysql数据库中case when 的用法
场景1:比如说我们在数据库存了性别的字段,一般都是存0 和 1 代表男和女 然后我们会得到0和1之后在java中判断 ,很麻烦有么有?其实我们完全可以在sql中判断好之后拿来现成的.就是在sql中 ...
最新文章
- oracle10官网下载安装,oracle11g安装(win10)下载安装
- 肯德基圣代中间空心_建造冰淇淋圣代解释CSS位置
- c语言存储结构的实现,(C语言)栈的链式存储结构的实现
- poj 3026 Borg Maze (最小生成树+bfs)
- php替换文本域中的换行符,文本域中换行符的替换示例
- python嵌套字典的建立_python – 从Pandas DataFrame创建复杂的嵌套字典
- 微信小程序page设定css,微信小程序——启动,渲染与Page
- O-RAN: Towards an Open and Smart RAN
- OpenShift 4 Hands-on Lab (4) - 用ImageStream操作Image
- 数字信号处理--7.3--FFT算法
- 嵌入式 Linux 4.0,嵌入式多媒体中心 OpenELEC 4.0.4
- 新浪微博api接口java_新浪微博API(java版)
- 2022DIY电脑配置入门篇(包含各cpu显卡天梯图对比)
- IPQ8074板载12天线符合802.11ax标准双频工业级嵌入式无线AP主板
- 倾斜摄影三维建模全流程
- 高德地图实现多天路线规划(途经点显示自定义内容)+轨迹回放(显示车牌)
- 网易云音乐小程序 笔记
- 【经验总结】Maple看电子书
- matlab trapz二重积分函数_如何使用 MATLAB 求解定积分、不定积分和多重积分问题...
- IIC 通信协议 (二)