常用函數
- sysdate 系統的當前日期和時間,包括每月日和時分秒
- Lower(string) 大寫轉小寫
- Upper(string) 小寫轉大寫
- trim(string) 、ltrim、rtrim 去左右空格
- to_numer(string) 字符轉數字
- to_char(date,'format') 日期按照format格式轉化爲字符串
- to_date(string,'format') 字符串按照format的格式轉化爲日期
- Replace(string,searching,[repstring]) 替換字符串
- Instr(string,m) 測試子串是否存在
- Substr(string,m,n) 取子字符串,m 表示截取字符串的開始位置,n表示要截取的字符串的長度
- || 字符串連接
- length(string) 返回字符串string的長度
- months_between(date1,date2) 返回給定日期的月數
- nvl (exp1,exp2)如果exp1的值爲null,則返回exp2,返回值可以爲字符串,日期型、數值型等。
- decode(input_value,value,result,[,value,result....][,default_result])
相當於一個條件語句(IF)。將輸入數值與函數中的參數列表相比較,根據輸入值返回一個對應值。函數的參數列表是由若干個數值及其對應結果值組成的若干序偶形式。當然,如果未能與任何一個實參序偶匹配成功,則函數返回默認值。除此之外DECODE函數還能識別和操作空值。
- Round(m,n)四捨五入
- Trunc(m,n) 截斷,取前n位
- floor(num) 向下取整
- ceil(num) 向上取整
sign(num)取數字n的符號,大於0返回1,小於0返回-1,等於0返回0
select a,decode(sign(sal-5),-1,'初級',0,'初級',
(decode(sign(sal-100),0,'中級',-1,'中級',
(decode(sign(sal-100),1,'高級',
'未知')))))
from item
where a = '2';
聚集函數
- avg 求平均值
- min 求最大值
- max 求最小值
- sum 求和
- count 計數
其中sum和avg的輸入必須是數值,其他運算可以作用數據庫中的任何數據類型
使用聚集函數查詢結果只有一個屬性的關係,其中只包括一個元組;
count(屬性名)和count(*)的區別在於count(*)返回滿足條件的元組的總個數(即使元組中的所有屬性取值都爲nulll也會進行計算),而count(屬性名)返回的是該屬性中取值不爲null的總個數。
不允許使用count(*)的同時使用distinct;
不適用分組的聚集函數,在select 子句中,只能出現聚集函數,不能出現其他的屬性名;
除count(*)以外的所有聚集函數,都會忽略null值。如果需求不忽略null值,可以使用nvl進行處理;
聚集函數在輸入爲空集的情況下返回一個屬性一個元組的關係,返回結果爲null值,而count函數在輸入爲空集的情況下,count返回0;
聚集函數只能出現在select子句和having 子句中;
示列如下
select avg(sal),count(*)
from item
where a='2';
count(*)會計算null,而avg會忽略null,在這裏會除以sal不爲空的計數
select avg(nvl(sal,0)),count(*)
from item
where a='2';
上面這個例子則會除以包括sal爲空的計數