iT邦幫忙

DAY 10
0

ORACLE 管理與系統開發運用學習日記系列 第 10

10.SQL語法II: single row functions(II)與group functions

在接過幾個系統維護專案,曾經遇過預存程序寫的不好導致系統運作緩慢,努力追蹤後才發現,原因是語法上使用不當,

在資料量少的時候影響不大,但是系統運行一段時間後,資料量越來越大,系統回應速度就越來越緩慢,

久而久之遇到越來越多類似的問題,漸漸的覺得SQL語法雖然相當基礎,但SQL要寫的好卻是一門學問。

----------------------------------- 我是分隔線 -----------------------------------

這篇將繼續補充single row functions:

包含一般常用於判斷NULL、條件式判斷的single row function

除此之外,也簡單介紹常用的group functions

一、一般常用single row function:

1.NVL:如果expr1為null,則回傳expr2

NVL(expr1,expr2)

2.NVL2:如果expr1不為null,則回傳expr2;若expr1為,則回傳expr3。

NVL2(expr1,expr2,expr3)

3.NULLIF:expr1與expr2比較,若相同回傳NULL,否則回傳expr1

NULLIF(expr1,expr2)

4.COALESCE:回傳非null的expr

COALESCE(expr1,expr2,...exprn)

二、條件式single row function:

1.CASE: 若expr符合comparison_expr1 則回傳return_expr1, 依此類推..

CASE expr WHEN comparison_expr1 THEN return_expr1

[WHEN comparison_expr2 THEN return_expr2

WHEN comparison_exprn THEN return_exprn

ELSE else_expr]

2.DECODE:與CASE類似,但可以將欄位作為比較條件,回傳符合查詢條件的結果。

DECODE( col|expression, search1, result1

[,search2, result2, ...,]

[, default] )

三、巢狀使用single row function:

例:

select last_name, UPPER(CONCAT(SUBSTR(LAST_NAME,1,8),_US))

from employee

where department_id = 60

四、group function

1.AVG: 平均值

2.COUNT:計數

3.MAX:最大值

4.MIN:最小值

5.SUM:總和

select count(*) from table

select AVG(salary) , MAX(salary), MIN(salary) ,SUM(salary)

from employee

--

很多function靈活用運,會讓自己在工作上省了不少功夫,

有工具的時候就要使用,免得讓自己作了一大段後,才發現別人已經做好工具可以用了!!


上一篇
9.SQL語法I: single row function(1)
下一篇
11.SQL語法III:join
系列文
ORACLE 管理與系統開發運用學習日記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言