一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數據庫技術|

服務器之家 - 數據庫 - Oracle - oracle case when 語句的用法詳解

oracle case when 語句的用法詳解

2019-11-22 15:13oracle教程網 Oracle

本篇文章是對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.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 <= 800  THEN '3'  
WHEN salary > 800 AND salary <= 1000 THEN '4'  
ELSE NULL END salary_class, -- 別名命名
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 <= 800  THEN '3'  
WHEN salary > 800 AND salary <= 1000 THEN '4'  
ELSE NULL END;  


3.關于IF-THEN-ELSE的其他實現
3.1 DECODE() 函數

復制代碼代碼如下:


select decode(sex, 'M', 'Male', 'F', 'Female', 'Unknown')
from   employees;


貌似只有Oracle提供該函數,而且不支持ANSI SQL,語法上也沒CASE WHEN清晰,個人不推薦使用。
3.2 在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%')


這種方法也是在特殊情況下使用,要多注意邏輯,不要弄錯。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 色漫在线观看 | 丁香六月色婷婷综合网 | 免费看一级 | 欧美国产日韩在线播放 | 欧美草逼视频 | 欧美高清乌克兰精品另类 | 久久伊人影院 | 国产福利不卡视频在免费 | 67id人成观看免费 | 公园暴露娇妻小说 | 每天都要睡男人(nph) | 99久久中文字幕伊人 | 国产四虎 | 天美传媒影视在线免费观看 | 国产精品久久久久久久久免费观看 | 色亚州 | 91精品国产综合久久消防器材 | 午夜神器老司机高清无码 | 国产福利一区二区三区四区 | 亚洲AV无码国产精品午夜久久 | 欧美视频网址 | 国产日韩欧美视频 | 精品国产mmd在线观看 | 狠狠色综合久久婷婷 | 无人区免费一二三四乱码 | 亚洲gogo人体大胆西西安徽 | 日日操综合 | 国产在线精品亚洲第一区香蕉 | 外国黄色软件 | 91aaa免费免费国产在线观看 | 成人国产在线观看 | 欧美人畜 | 99精品免费观看 | 国产成人在线影院 | 青青青青青 | 蝴蝶传媒3o45| 欧美在线视频一区 | 国产一区日韩二区欧美三 | 无码欧美喷潮福利XXXX | 大乳奶水bbw | 强制高h |