zoukankan      html  css  js  c++  java
  • 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 。这里需要特别注意

     

     

  • 相关阅读:
    如何阅读一篇论文
    FT232R驱动问题
    无线传感网-定位技术1
    无线传感网中常见路由协议2
    课程总结
    十四周总结以及实验报告
    第十三周总结
    第十二周课程总结
    第十周课程总结
    第九周课程总结&实验报告(七)
  • 原文地址:https://www.cnblogs.com/qianyuliang/p/6729183.html
Copyright © 2011-2022 走看看