oralce的判断语句

Posted 浅雨凉

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oralce的判断语句相关的知识,希望对你有一定的参考价值。

大家对 IF ELSE 语句应该都很熟悉吧,它是用来对过程进行控制的。在 SQL 的世界中 CASE 语句有类似的效果。下面简单的介绍 CASE 语句的用法。

CASE 语句的形式

事实上,CASE 语句有两种形式

 1 SELECT  
 2     -- 简单 CASE 语句(Simple CASE)  
 3     CASE GENDER    
 4         WHEN 1 THEN \'\'    
 5         ELSE \'\'    
 6     END AS GENDER,  
 7   
 8     -- 查询 CASE 语句(Searched CASE)  
 9     CASE     
10         WHEN GENDER = 1 THEN \'\'    
11         ELSE \'\'    
12     END AS GENDER  
13       
14 FROM USER_INFO;  

 

注意点: 

1、以CASE开头,以END结尾 
2、分支中WHEN 后跟条件,THEN为显示结果 
3、ELSE 为除此之外的默认情况,类似于高级语言程序中switch case的default,可以不加 
4、END 后跟别名 

 

考虑下面的情况,假设有个 USER_INFO 表,定义如下:

1 CREATE TABLE USER_INFO  
2 (  
3     NAME        VARCHAR2(20) NOT NULL,  ---姓名  
4     GENDER      NUMBER(1,0),            ---性别(1、男   2、女)  
5     BIRTHDAY    DATE                    ---生日  
6 );  
7   
8 INSERT INTO USER_INFO VALUES (\'张三\', 1, DATE \'2014-12-27\');  
9 INSERT INTO USER_INFO VALUES (\'李四\', 2, DATE \'2014-12-27\'); 

CASE使用案例 1

把 USER_INFO 表导出生成一个文件,要求性别为男或女,而不是1和2,怎么办?我们可以用如下的语句处理:

1 SELECT   
2     NAME,  
3     CASE GENDER  
4         WHEN 1 THEN \'\'  
5         ELSE \'\'  
6     END AS GENDER,  
7     BIRTHDAY  
8 FROM USER_INFO;

CASE使用案例 2

假设 USER_INFO 目前没有值,然后你往 USER_INFO 导入了一批数据,但是很不幸,错把男设置成为2,而把女设置成为1,现在要求你变换过来,怎么办?

 

方法1:使用三条语句,先把2更新成3,接着把1更新成2,最后把3更新成1,是不是很麻烦?

1 UPDATE USER_INFO SET GENDER=3 WHERE GENDER=2;  
2 UPDATE USER_INFO SET GENDER=1 WHERE GENDER=3;  
3 UPDATE USER_INFO SET GENDER=2 WHERE GENDER=1; 

方法2:使用CASE语句

1 UPDATE USER_INFO SET GENDER=  
2 (  
3   CASE GENDER  
4     WHEN 1 THEN 2  
5     WHEN 2 THEN 1  
6     ELSE GENDER  
7   END  
8 );

DECODE 函数

此外, Oracle 还提供了一个函数来达到和 CASE 语句相同的效果。

1 SELECT DECODE(GENDER, 1, \'\', 2, \'\', \'未知\') FROM USER_INFO;  
1 DECODE(value,if1,then1,if2,then2,if3,then3,...,else)

表示如果value等于if1时,DECODE函数的结果返回then1,...,如果不等于任何一个if值,则返回else。 

 

If/Else功能实现的3种写法

 1 一、单个IF
 2 1 3 
 4 if a=...  then
 5 .........
 6 end if;
 7 
 8 2 9 
10 if a=... then
11 ......
12 else
13 ....
14 end if;
15 
16 二、多个IF
17 
18 if a=..  then
19 ......
20 elsif a=..  then
21 ....
22 end if;     
23 这里中间是“ELSIF”,而不是ELSE IF 。这里需要特别注意

 

 

 

 

以上是关于oralce的判断语句的主要内容,如果未能解决你的问题,请参考以下文章

oralce数据库常用到的一些sql命令(加字段注释,修改数据之类)

oralce

Oralce 查询单表数据大小

MYBATIS05_ifwherechoosewhentrimsetforEach标签sql片段

查看oralce的版本及安装了哪些选项

使用带参数方式新增或修改可为空的非字符串类型数据到oralce数据库