Oracle学习日记(5)

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
        ELSE NULL
        END) 男生数,
        COUNT(
        CASE WHEN SEX=2 THEN 1
        ELSE NULL
        END) 女生数
     from students GROUP BY grade;

 2.2 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
        ELSE 0
       END)=1

2.3 GROUP BY CASE WHEN 

代码如下
SELECT 
    CASE WHEN salary<=500 THEN '1'
         WHEN salary>500 AND salary <=600 THEN '2'
         WHEN salary>600 AND salary <=700 THEN '3'
         WHEN salary>700 AND salary <=800 THEN '4'
         ELSE NULL
     END 别名,
     COUNT(*) 
FROM table_A
GROUP BY 
    CASE WHEN salary<=500 THEN '1'
         WHEN salary>500 AND salary <=600 THEN '2'
         WHEN salary>600 AND salary <=700 THEN '3'
         WHEN salary>700 AND salary <=800 THEN '4'
         ELSE NULL
     END;

3.关于IF-THEN-ELSE 其他实现

   3.1 在WHERE 中特殊实现

代码如下:
SELECT T2.*,T1.*
   FROM T1,T2
WHERE (T2.COMPARE_TYPE='A' AND T1.SOME_TYPE LIKE 'NOTHING%')
   OR  (T2.COMPARE_TYPE!='A' AND T1.SOME_TYPE NOT LIKE 'NOTHING%')

  3.2 DECODE()函数

SELECT DECODE(SEX,'M','MALE','F','Female','Unkonw')
FROM employees;

oracle提供该函数,不支持ANSI SQL,不推荐使用。

你可能感兴趣的:(Oracle学习日记(5))