oralce的判断语句
大家对 IF ELSE 语句应该都很熟悉吧,它是用来对过程进行控制的。在 SQL 的世界中 CASE 语句有类似的效果。下面简单的介绍 CASE 语句的用法。
CASE 语句的形式
事实上,CASE 语句有两种形式
SELECT
-- 简单 CASE 语句(Simple CASE)
CASE GENDER
WHEN 1 THEN '男'
ELSE '女'
END AS GENDER, -- 查询 CASE 语句(Searched CASE)
CASE
WHEN GENDER = 1 THEN '男'
ELSE '女'
END AS GENDER FROM USER_INFO;
注意点:
1、以CASE开头,以END结尾
2、分支中WHEN 后跟条件,THEN为显示结果
3、ELSE 为除此之外的默认情况,类似于高级语言程序中switch case的default,可以不加
4、END 后跟别名
考虑下面的情况,假设有个 USER_INFO 表,定义如下:
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:使用三条语句,先把2更新成3,接着把1更新成2,最后把3更新成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
);
DECODE 函数
此外, Oracle 还提供了一个函数来达到和 CASE 语句相同的效果。
SELECT DECODE(GENDER, 1, '男', 2, '女', '未知') FROM USER_INFO;
DECODE(value,if1,then1,if2,then2,if3,then3,...,else)
表示如果value等于if1时,DECODE函数的结果返回then1,...,如果不等于任何一个if值,则返回else。
If/Else功能实现的3种写法
一、单个IF
1、 if a=... then
.........
end if; 2、 if a=... then
......
else
....
end if; 二、多个IF if a=.. then
......
elsif a=.. then
....
end if;
这里中间是“ELSIF”,而不是ELSE IF 。这里需要特别注意
oralce的判断语句的更多相关文章
- SQLite的时候判断语句是否纯在:出现RuntimeException
写SQLite的时候判断语句是否纯在: public boolean exist(long id) { String filter = FRIEND_KEY_ID + "=" + ...
- 第二周:If判断语句程序当中的作用简介
1.If语句的作用: 在我们编写程序时经常会遇到内容判断的问题,比如判断内容的真假或者值的大小分别输出内容的问题 这时就会用到我们的If判断语句了,顾名思义,if在英文单词中意思为如果,在Java中他 ...
- 关于JavaScript的判断语句(1)
if语句: if( 判断条件 ){ 判断结果为true执行语句: } if...else语句: if(判断条件){ 判断结果为true时执行的语句: }else{ 判断结果为false时执行语句: } ...
- SQL判断语句用法和多表查询
1.格式化时间sql语句 本例中本人随便做了两张表,和实际不是很相符,只是想说明sql语句的写法. 例1表格式如下: 需求:查询出本表,但需要使time字段的时间格式为yyyy-MM-dd,比如:20 ...
- VB的判断语句和循环语句
判断语句 •If语句 if语句共有4种写法: 第一种语法: If 条件判断语句 then 程序代码 第二种语法:If 条件判断语句 then 程序代码 else 程式代码 第三种语法: If 条件 ...
- Interview----求 1+2+...+n, 不能用乘除法、for、while if、else、switch、case 等关键字以及条件判断语句 (A?B:C)
题目描述: 求 1+2+...+n, 要求不能使用乘除法.for.while.if.else.switch.case 等关键字以及条件判断语句 (A?B:C). 分析: 首先想到的是写递归函数,但是遇 ...
- 求1+2+…+n,要求不能使用乘除法、for、while、if、else、s witch、case 等关键字以及条件判断语句(A?B:C)和不用循环/goto/递归输出1~100的10种写法
来源:据说是某一年某个公司的面试题 题目:求1+2+…+n, 要求不能使用乘除法.for.while.if.else.s witch.case 等关键字以及条件判断语句(A?B:C) 分析:这题本来很 ...
- aspcms中if判断语句的运用
1.<h3 {if:"[list:isrecommend]"="1"} style="color:red;"{end if}>& ...
- if条件判断语句的不同
let number = ["a":1, "b":2, "c":3]; if let num = number["d"] ...
随机推荐
- (转)ELK原理与介绍
原文:https://www.cnblogs.com/aresxin/p/8035137.html 为什么用到ELK: 一般我们需要进行日志分析场景:直接在日志文件中 grep.awk 就可以获得自己 ...
- 深度学习(一) BP神经网络
怎样理解非线性变换和多层网络后的线性可分,神经网络的学习就是学习如何利用矩阵的线性变换加激活函数的非线性变换 线性可分: 一维情景:以分类为例,当要分类正数.负数.零,三类的时候,一维空间的直线可以找 ...
- java数据结构---------插入排序的实现
插入排序分为直接插入排序和希尔排序 插入排序 实现方法 //插入排序,按从小到大的顺序 public static void insertSort(int[] array){ int j,temp = ...
- CPU漏洞补丁修复导致KeServiceDescriptorTable获取变更
一.前言 2018年元旦,出现的cpu的漏洞,可以在windows环三直接读取内核数据,windows对该漏洞提供补丁,补丁增加了一个页表,对应的内核处理也增加了,接下来我们看下补丁修复的表象以及对K ...
- Oracle 12c JDBC 连接
import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import ...
- 使用 DL4J 训练中文词向量
目录 使用 DL4J 训练中文词向量 1 预处理 2 训练 3 调用 附录 - maven 依赖 使用 DL4J 训练中文词向量 1 预处理 对中文语料的预处理,主要包括:分词.去停用词以及一些根据实 ...
- ajax从零基础到实战
一. 什么是AJAX? ajax是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术. 二. 在项目中怎么运用AJAX? 项目主要文件夹目录有img文件夹,css文件夹,js文件夹,如果你要运 ...
- Windows远程协助相关汇总
正常情况下要勾选一个 复选框 ,再确保三个服务启动 https://jingyan.baidu.com/article/ca00d56c4c62bce99febcf11.html https://ji ...
- C# 之正则表达式运用
C#正则验证大全 Regex.IsMatch()正则表达式验证 需要引入命名空间 using System.Text.RegularExpressions; #region 验证文本框输入为数字 ...
- 撩课-每天刷Web面试题(前10天汇总)-Day12
一.算法题部分 1. 如何获取浏览器URL中查询字符串中的参数 function getParamsWithUrl(url) { var args = url.split('?'); ] === ur ...