转载出处: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用法相关推荐

  1. ORACLE CASE WHEN 及 SELECT CASE WHEN的用法

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

  2. 转 ORACLE CASE WHEN 及 SELECT CASE WHEN的用法

    原址如下: http://exceptioneye.iteye.com/blog/1197329 ORACLE CASE WHEN 及 SELECT CASE WHEN的用法 Case具有两种格式.简 ...

  3. Oracle的CASE语句和表达式

    http://space.itpub.net/15203236/viewspace-534849 Oracle的CASE语句和表达式 上一篇 /下一篇  2009-01-09 23:19:46 / 天 ...

  4. bulk怎么使用oracle,oracle学习之bulk collect用法

    通过bulk collect减少loop处理的开销,使用Bulk Collect提高Oracle查询效率 Oracle8i中首次引入了Bulk Collect特性,该特性可以让我们在PL/SQL中能使 ...

  5. Oracle中游标Cursor基本用法详解

    这篇文章主要介绍了Oracle中游标Cursor基本用法详解,还是比较全面的,具有一定参考价值,需要的朋友可以了解下. 查询 SELECT语句用于从数据库中查询数据,当在PL/SQL中使用SELECT ...

  6. Oracle数据库中SQL语句用法(一)

    Copyright © 2019 @Linyer. All Rights Reserved 下接Oracle数据库中SQL语句用法(二)[点击以查看] 目录 第1章:编写基本的SQL SELECT语句 ...

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

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

  8. c语言 case语句用法,switch ... case语句的用法[组图]

    switch ... case语句的用法[组图] 08-13栏目:技术 TAG:switch case语句 switch case语句 当情况大于或等于4种的时候就用switch ...  case语 ...

  9. mysql数据库中case when 的用法

    场景1:比如说我们在数据库存了性别的字段,一般都是存0 和 1 代表男和女   然后我们会得到0和1之后在java中判断 ,很麻烦有么有?其实我们完全可以在sql中判断好之后拿来现成的.就是在sql中 ...

最新文章

  1. oracle10官网下载安装,oracle11g安装(win10)下载安装
  2. 肯德基圣代中间空心_建造冰淇淋圣代解释CSS位置
  3. c语言存储结构的实现,(C语言)栈的链式存储结构的实现
  4. poj 3026 Borg Maze (最小生成树+bfs)
  5. php替换文本域中的换行符,文本域中换行符的替换示例
  6. python嵌套字典的建立_python – 从Pandas DataFrame创建复杂的嵌套字典
  7. 微信小程序page设定css,微信小程序——启动,渲染与Page
  8. O-RAN: Towards an Open and Smart RAN
  9. OpenShift 4 Hands-on Lab (4) - 用ImageStream操作Image
  10. 数字信号处理--7.3--FFT算法
  11. 嵌入式 Linux 4.0,嵌入式多媒体中心 OpenELEC 4.0.4
  12. 新浪微博api接口java_新浪微博API(java版)
  13. 2022DIY电脑配置入门篇(包含各cpu显卡天梯图对比)
  14. IPQ8074板载12天线符合802.11ax标准双频工业级嵌入式无线AP主板
  15. 倾斜摄影三维建模全流程
  16. 高德地图实现多天路线规划(途经点显示自定义内容)+轨迹回放(显示车牌)
  17. 网易云音乐小程序 笔记
  18. 【经验总结】Maple看电子书
  19. matlab trapz二重积分函数_如何使用 MATLAB 求解定积分、不定积分和多重积分问题...
  20. IIC 通信协议 (二)

热门文章

  1. 【死磕NIO】— NIO基础详解
  2. 招募 Python 技术公开课讲师 | 放大你的专业影响力,获得专属奖励!
  3. 3万亿美元市值的苹果,给CEO库克发了1亿美元大红包
  4. metrics简单简绍
  5. 微信小程序版本更新提示
  6. 判断一个年份是否为闰年
  7. Nacos注册中心CP架构Raft源码分析
  8. 浏览器相关内容总结?
  9. 代码发芽网最近一次更新中所遇到的问题
  10. Greenplum配置mirror