Oracle_SQL 之条件表达式
来源:互联网 发布:ppt数据分析图表制作 编辑:程序博客网 时间:2024/05/22 23:10
前言
在Oracle中,我们有两种方式可以实现 IF-THEN-ELSE
的逻辑:CASE 语句 或者 DECODE 函数
相比较来说DECODE 函数会更加的简洁。
我们在oracle数据库中建立一个user_info表:
CREATE TABLE user_info(user_id NUMBER(2) primary key, user_name VARCHAR2(14), user_age NUMBER(4), user_birthday DATE);
我们可以看到其中有 用户ID主键,用户姓名,用户年龄,以及用户生日。
CASE 语句
[ 第一题 ]
查询所有用户的信息,我们增加一个额外的显示字段age_type
,将年龄小于20的设置为A,年龄在20到30之间的设置为B,大于30的设置为C。
SELECT u.user_id, u.user_name, CASE WHEN u.user_age < 20 THEN 'A' WHEN u.user_age >= 20 AND u.user_age < 30 THEN 'B' ELSE 'C' END age_type FROM user_info u;
[ 第二题 ]
查询员工信息,增加一个额外的字段user_type
,如果是张三
则显示为主管
,如果是李四
则显示为经理
,其他显示为员工
。
SELECT u.user_id, u.user_name, CASE u.user_name WHEN '张三' THEN '主管' WHEN '李四' THEN '经理' ELSE '员工' END user_type FROM user_info u;
DECODE 函数
我们将上面的的两题使用DECODE 函数再写一遍,代码如下:
[ 第一题 ]
SELECT u.user_id, u.user_name, u.user_age, decode(trunc(u.user_age/10), 1, 'A', 2, 'B', 'C') age_type, u.user_birthday FROM user_info u;
[ 第二题 ]
SELECT u.user_id, u.user_name, u.user_age, decode(u.user_name, '张三', '主管', '李四', '经理', '员工') user_type, u.user_birthday FROM user_info u;
注:如果只是判断两个数的大小,我们可以使用sign()
函数
sign(n)函数:根据某个值n是0、正数、负数,分别返回0、1、-1
如题:
年龄小于25的设置为A,年龄大于25的设置为B,等于25的设置为 C:
SELECT u.user_id, u.user_name, u.user_age, decode(sign(u.user_age-25), -1, 'A', 1, 'B', 'C') age_type, u.user_birthday FROM user_info u;
阅读全文
1 0
- Oracle_SQL 之条件表达式
- oracle_sql
- makefile之条件表达式
- Oracle_SQL 基础之 类型转换
- JavaScript规范之条件表达式
- IOS 之 NSExpression 条件表达式
- C语言之条件表达式
- XQuery表达式之条件表达式(Conditional Expression)
- Oracle_SQL之lag()和lead()函数使用
- 重构之简化条件表达式
- Python学习笔记之条件表达式
- 重构之简化条件表达式
- 重构之简化条件表达式2
- JavaScript之条件表达式性能影响
- using thymeleaf之五条件表达式
- <Python进阶读书笔记>之(五) 条件表达式
- 重构之简化条件表达式
- 正则表达式之分组捕获、条件表达式、平衡组
- 冒泡排序及2种优化方法
- Java异常之throws与throw关键字的用法
- 各大互联网大赛汇总
- Java工具类_模拟HTTP POST请求
- ubuntu16.04下KDevelop安装与使用
- Oracle_SQL 之条件表达式
- Android开发之QQ分享
- dtd设计
- 【撸码caffe 二】 blob.hpp
- 那一年, 我第一次在工作中用到了三次握手的分析
- 【一步一步】Spring 源码环境搭建
- java工程师基础知识面试
- * 24种设计模式——责任链模式
- 设置meta标签 清除页面缓存,如:<meta http-equiv="Cache-Control" content="no-cache"/>