標籤:使用 io art re c cti div ar
CASE 語句
CASE selector
WHEN value1 THEN action1;
WHEN value2 THEN action2;
WHEN value3 THEN action3;
…..
ELSE actionN;
END CASE;
CASE運算式
DECLARE
temp VARCHAR2(10);
v_num number;
BEGIN
v_num := &i;
temp := CASE v_num
WHEN 0 THEN ‘Zero‘
WHEN 1 THEN ‘One‘
WHEN 2 THEN ‘Two‘
ELSE
NULL
END;
dbms_output.put_line(‘v_num = ‘||temp);
END;
/
CASE搜尋語句
CASE
WHEN (boolean_condition1) THEN action1;
WHEN (boolean_condition2) THEN action2;
WHEN (boolean_condition3) THEN action3;
……
ELSE actionN;
END CASE;
CASE搜尋運算式
DECLARE
a number := 20;
b number := -40;
tmp varchar2(50);
BEGIN
tmp := CASE
WHEN (a>b) THEN ‘A is greater than B‘
WHEN (a<b) THEN ‘A is less than B‘
ELSE
‘A is equal to B‘
END;
dbms_output.put_line(tmp);
END;
/
SELECT CASE WHEN 的使用方法
select 與 case結合使用最大的優點有兩點,一是在顯示查詢結果時能夠靈活的組織格式,二是有效避免了多次對同一個表或幾個表的訪問。以下舉個簡單的範例來說明。比如表 students(id, name ,birthday, sex, grade),要求按每一個年級統計男生和女生的數量各是多少,統計結果的表頭為,年級,男生數量,女生數量。假設不用select case when,為了將男女數量並列顯示,統計起來非常麻煩,先確定年級資訊,再依據年級取男生數和女生數,並且非常easy出錯。用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;