日期:2014-05-16  浏览次数:20413 次

Oracle case语句语法简介
Oracle case语句是我们最常用的语句之一,下面就为您介绍Oracle case语句的语法,并举例说明,希望对您能够有所帮助。

当执行多重条件分支语句时,使用Oracle case语句更加简洁、而且效率也更好。Oracle case语句处理多重条件分支语句有两种方法,第一种方法是使用单一选择符进行等值比较。第二种方法是使用多种条件进行非等值比较。

1、使用单一选择符进行等值比较
当执行Oracle case语句执行多重条件分支时,如果条件选择符完全相同,并且条件表达式为相同条件选择,那么可以选择单一选择符进行等值比较,语法如下:
  
case  条件选择符
when  条件值表达式1 then 要执行的操作1;
when  条件值表达式2 then 要执行的操作2;
。。。。。。。
else
要执行的操作。
end case;

示例如下:

declare 
v_count number; 
begi 
select count(*) into v_count from cip_temps; 
case v_count 
when 1 then 
dbms_output.put_line('when 1操作___v_cont的值:'|| v_count); 
when 5 then 
dbms_output.put_line('when 5操作___v_count的值:'|| v_count); 
when 10 then 
dbms_output.put_line('when 10操作____v_count的值:'|| v_count); 
else 
dbms_output.put_line('else操作____v_cout的值:'||v_count); 
end case; 
end; 

2、case使用多种条件进行比较
如果选择多个条件进行不同比较时,那么必须在when子句中指定比较条件,语法如下:
    
case 
when   条件值表达式1 then 要执行的操作1;
when   条件值表达式2 then 要执行的操作2;
。。。。。。。
else
要执行的操作。
end case;

示例如下:

declare 
v_count number; 
begin 
select count(*) into v_count from cip_temps; 
case  
when v_count>10 then 
dbms_output.put_line('when 1操作___v_cont的值:'|| v_count); 
when v_count>5 then 
dbms_output.put_line('when 5操作___v_count的值:'|| v_count); 
when v_count>4 then 
dbms_output.put_line('when 10操作____v_count的值:'|| v_count); 
else 
dbms_output.put_line('else操作____v_cout的值:'||v_count); 
end case; 
end; 

Oracle CASE WHEN 用法介绍
1. CASE WHEN 表达式有两种形式
--简单Case函数 

CASE sex 
WHEN '1' THEN '男' 
WHEN '2' THEN '女' 
ELSE '其他' END 

--Case搜索函数 

CASE
WHEN sex = '1' THEN '男' 
WHEN sex = '2' THEN '女' 
ELSE '其他' END

2. CASE WHEN 在语句中不同位置的用法

2.1 SELECT CASE WHEN 用法

SELECT   grade, COUNT (CASE WHEN sex = 1 THEN 1      /*sex 1为男生,2位女生*/
                       ELSE NULL
                       END) 男生数,
                COUNT (CASE WHEN sex = 2 THEN 1
                       ELSE NULL
                       END) 女生数
    FROM students GROUP BY grade;
2.3 WHERE CASE WHEN 用法
SELECT T2.*, T1.*
   FROM T1, T2
  WHERE (CASE WHEN T2.COMPARE_TYPE = 'A' AND
                   T1.SOME_TYPE LIKE 'NOTHING%'
                THEN 1
              WHEN T2.COMPARE_TYPE != 'A' AND
                   T1.SOME_TYPE NOT LIKE 'NOTHING%'
                THEN 1
 &n