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

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

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%')


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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 久久综合给会久久狠狠狠 | 99国产情在线视频 | 大又大又黄又爽免费毛片 | 黄色a∨ | 国产成人高清亚洲一区91 | 草莓永久地域网名入2022 | 日本免费观看95视频网站 | 无码观看AAAAAAAA片 | 国产精品久久久久久久久久久久 | 秒播影视 午夜福利毛片 | 日本人泡妞xxxxxx69 | 男人久久天堂 | 成人影院www在线观看 | 日韩理论片 | 黑人草| 欧美色图亚洲 | 黑人与欧洲女子性大战 | 久久久久久免费观看 | 欧美综合一区二区三区 | 天天狠天天透天干天天怕处 | 美女跪式抽搐gif动态图 | 国产日韩免费视频 | 色菇凉天天综合网 | 门房秦大爷小说 | 色图片小说| 久久久精品免费视频 | 亚洲国产AV无码综合在线 | 亚洲国产影院 | 精品国产乱码久久久人妻 | 日本xxxx69hd | 亚洲精品九色在线网站 | 爽好舒服使劲添高h视频 | 国产精品香蕉一区二区三区 | 日韩经典在线观看 | 国产一区二区三区免费在线视频 | 亚洲2017久无码 | 欧美黑人一级 | 大学生情侣在线 | 波多洁野衣一二区三区 | 1986葫芦兄弟全集免费观看第十集 | freexxxx性护士第一次 |