1. 程式人生 > >Oracle CASE WHEN 用法介紹

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 ELSE 0 END) = 1
複製程式碼

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

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

轉自:https://www.cnblogs.com/eshizhan/archive/2012/04/06/2435493.html

相關推薦

Oracle CASE WHEN 用法介紹

1. CASE WHEN 表示式有兩種形式 --簡單Case函式 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END --Case搜尋函式 CASE WHEN sex = '1

Oracle CASE WHEN 用法

case when 語法  select t.* , case (selectcolumn) when expression1 then result1 when expression2 then result2 ... when expressionN then resultN e

ORACLE CASE WHEN 及 SELECT CASE WHEN用法

四,根據條件有選擇的UPDATE。 例,有如下更新條件 工資5000以上的職員,工資減少10%工資在2000到4600之間的職員,工資增加15% 很容易考慮的是選擇執行兩次UPDATE語句,如下所示--條件1 UPDATE Personnel SET salary = salary * 0.9 WH

oracle case when then else end用法

語法:   CASE search_expression   當表達1那麼結果1   當表達2那麼結果2 比如客戶型別個人0,機構1,產品2對應的證件型別分別對應1018,1019,1355字典項。 下面舉例說明具體實現:如何把某客戶型別對應的證件型別翻譯成中文

ORACLE CASE WHEN 及 SELECT CASE WHEN用法

CASE 語句CASE selector   WHEN value1 THEN action1;   WHEN value2 THEN action2;   WHEN value3 THEN action3;   …..   ELSE actionN;END CASE; CA

oracle 的 sql 語句 case when 用法

示例 with tab1 as     (select              case                   when  (count(su.insu_pkg_id)>0) then 2                   else 0

(轉)CASE WHEN 用法

.cn 什麽 避免 tcl 現在 事情 class 計算機 搜索 Case具有兩種格式。簡單Case函數和Case搜索函數。 簡單Case函數 CASE sex WHEN ‘1‘ THEN ‘男‘ WHEN ‘2‘ THEN ‘女‘ ELSE ‘其他‘ END

SQL Server的case when用法

cas class bubuko person sql bsp as2 case identity 1.簡單sql一例 SELECT top 10 CASE WHEN IDENTITY_ID=‘1‘ THEN ‘管理員‘ WHEN IDENTITY_ID=‘5‘

decode函式的作用 decode和case when用法對比

學習分享必看:javacto.taobao.com 例子 如Table表有性別欄位,1代表男2代表女、3代表中性、還有沒填就代表未說明 select id,decode(sex,'1','男','2','女','3','中性','未說明') from Table; select id, &n

SqlServer Case When用法

Case具有兩種格式。簡單Case函式和Case搜尋函式。 --簡單Case函式 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END --Case搜尋函式 CASE W

儲存裡case when用法和and 後加條件

 儲存問題: case q9 when 0 then '+''''+'新單'+''''+' when 1 then '+''''+'再協商'+''''+' end as jb 假如我要換成 q9<=100 && q9>=85 的判斷怎麼改? 方法一

SQL之CASE WHEN用法詳解(CASE WHEN使用總結)

簡單CASE WHEN函式: CASE SCORE WHEN 'A' THEN '優' ELSE '不及格' END CASE SCORE WHEN 'B' THEN '良' ELSE '不及格' END CASE SCORE WHEN 'C' THEN '中' ELSE

case when 用法

Case具有兩種格式。簡單Case函式和Case搜尋函式。 --簡單Case函式 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END --Case搜尋函式 CASE WHEN sex = '1' THEN '

Oracle case when 實現資料欄位資料的判斷過濾

需求 現在有一份管線資料,表中含有欄位buildTime說明了管線的建設日期,我們需要按時間段統計管線的資料 這是,我們需要對管線表中建設日期所對應的欄位進行分類 實現如下: 實現 對現有的資料進行分類判斷過濾,使用到了 case when ca

Oracle Case When巢狀判斷結果集SQL

資料需求:此SQL是判斷UPS狀態使用1、一個機房有兩個UPS2、當其中一個UPS出現問題時,此時機房的UPS告警狀態為0,否則為13、UPS狀態0異常,1正常4、請編寫一個機房為例子  UPS編碼為:

Mysql CASE WHEN 用法

select sum(1) as col_0_0_, sum(case vciinfo.useable when -1 then 1 else 0 end) as col_1_0_, sum(case when vciinfo.activatetime is null then 0 else 1 end) a

oracle case when 使用

1. CASE WHEN 表示式有兩種形式 --簡單Case函式 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END --Case搜尋函式 CASE WHEN sex = '1' THEN '男' WHEN

Oracle Case end用法

<strong>1.表中有ABC三列,用SQL語句實現,當A列大於B列時選擇A列否則選擇B列,當B列大於C列時選擇B列否則選擇C列。 select (case when a>b then a else b end),(case when b>c th

oracle case when的使用和將列連線成字串

select a.*,b.name as appname, (case a.dbsrctype when 1 then (select serverIp||':'||port||','||userna

oracle case when的使用方法

http://www.2cto.com/database/201205/130090.html 大家都知道Case when的用法,一旦滿足了某一個WHEN ,則這一條資料就會退出CASE WHEN,而不再考慮其他CASE ,文章來詳細的介紹了case when的用法並舉例