前面我們從不同維度去分析的Oracle和MySQL的區別和使用,接下來我們來分享一些Oracle的函數和特殊用法。首先我們在分享今天的內容之前先來看看以下內容。
l條件查詢首先如果要查看崗位為MANAGER工資上漲50%的情況我們可以編寫如下語句:
SELECT job,sal,sal*1.5 FROM emp WHERE job = 'MANAGER';
其次如果查看崗位為SALESMAN工資上漲20%的情況我們需要編寫下面語句:
SELECT job,sal,sal*1.2 FROM emp WHERE job = 'SALESMAN';
然後如果查看崗位為ANALYST工資上漲10%的情況我們還需要編寫下面的語句:
SELECT job,sal,sal*1.1 FROM emp WHERE job ='ANALYST';
最後如果我要查看崗位非MANAGER、SALESMAN、ANALYST其他員工工資下調20%的情況還要編寫下面的語句;
SELECT job,sal,sal*0.8 FROM emp WHERE job NOT IN ('MANAGER','SALESMAN','ANALYST');
這樣感覺起來非常的麻煩,每一個條件都需要去編寫一條語句,效率變得比較低,那有沒有什麼更好的辦法呢?答案是肯定的,這就需要用到我們今天分享的內容,我們來看看。
lCase函數在Oracle中提供Case函數來解決上述問題,我們不需要頻繁的編寫SQL語句,只需要設定好相應的條件,做相應的查詢操作就好了。我們先來看看Case函數的語法:
CASE 列名
WHEN 值1 THEN 操作1
WHEN 值2 THEN 操作2
WHEN 值3 THEN 操作3
ELSE 操作4
END
那我們結合上面的問題來看下具體的用法:
SELECT job,sal,
(CASE
WHEN job ='MANAGER' THEN sal*1.5
WHEN job ='SALESMAN' THEN sal*1.2
WHEN job ='ANALYST' THEN sal*1.1
ELSE sal*0.8
END) ZH
FROM emp;
在這個具體用法中我們看到,我們按照不同的條件,完成不通過的操作,順利的把上述問題解決了,這就是本次分享的內容,後面還會分享Oracle的一些綜合運用。