Oracle中常用的函數

jopen 11年前發布 | 38K 次閱讀 Oracle 數據庫服務器

單行函數

數字函數

ROUND四舍五入運算

1.        ROUND(m)

2.        ROUND(m,n)

TRUNC(m,n)不進行四舍五入,直接截取

MOD(m,n)注意:當m,或n為負數時,結果與數學上的經典求模結果不一樣

如果被求模數為負數,與數學上的經典求模的區別

如果被求模數為負數時,數學經典求模公式為:

CEIL(天花板)返回不小于參數的最小值

FLOOR(地板)返回不大于該參數的最大值

 

 

字符函數

UPPER

3.        把字符串中的每個單詞字母轉換成大寫

LOWER

4.        把字符串中的每個單詞字母轉換成小寫

INITCAP

5.        把字符串中第一個字母轉換成大寫

TRIM/LTRIM/RTRIM裁剪掉前導/后導/兩端的空格字符或指定字符

LEADING代表前導,TRALING代表后導,BOTH代表全部

注:只能去掉首尾的字符,中間的不能去掉

6.        把首位的1去掉

7.        把首位的0去掉了

8.        aaaaa

 

SUBSTR:截取字符串

9.        從字符串左邊開始的第3個字符開始截取,長度為4

10.    從字符串右邊開始的第5個字符開始截取,長度為4

11.    從字符串左邊開始的第2個字符開始截取,長度為4(小數忽略)

12.    從字符串左邊開始的第2個字符開始截取,如果超過了字符串長度則只會輸出字符串剩余的字符

2.        LENGTH 注:Oracle1個漢字算1個字符,也是使用的unicode編碼

1.        得出字符串的長度

2.        得到字符串的字節長度

REPLACE

3.        REPLACE(src,search)

4.        REPLACE(src,search,replacement)把字符串中指定的字符刪除或者替換成別的字符

3.        CONCAT(char1,char2)拼接字符串 注:所有SQL中,+只用于數字

1.        把兩個字符串連接到一起

2.        把字符串和一個整數連接到一起

3.        拼接還有另外的一個常用方法,在字符串之間使用||連接

日期函數

Oracle中,有如下操作是合法的:

日期-日期 =數字(相差的天數)

日期+數字 =新的日期(數字指添加的天數)

MONTHS_BETEEN(date1,date2)算出兩個日期間的的間隔月數

NEXT_DAY(date,char)

返回當前日期的下一個字符串參數指定的日子,字符串必需表示一周中的某一天,例如:星期一,星期日……

LAST_DAY(date)

得到某個日期當月的最后一天的日期

ROUND

轉換函數

TO_NUMBER(expr,fmt)把字符串按指定格式轉換成整數

TO_CHAR(number)

把字符串按指定的格式轉換($代表美元符號)

L代表系統本地化的貨幣格式

TO_CHAR(datetime,fmt)把一個日期時間轉換成指定的字符串格式

注意:除了,./等少數標點外,日期格式中其他字符必須用“”括起來

 

TO_DATE

其它函數

NVL(exp1,exp2)

用于處理null值(nvl=null value),如果exp1的值不為null,則整個表達式的值為exp1的值,否則表達式的值為exp2的值

例子:顯示每個員工的年收入(員工comm可能為空,使用NVL進行判斷)

DECODE執行類似于switch…case…default的選擇邏輯

--示例一:將工作崗位中的ANALYST顯示為分析師,SALESMAN顯示為銷售,MANAGER顯示為經理,其余的顯示為其他

--示例一:顯示出員工姓名以及所對應的部門名稱

多行函數/聚合函數/分組函數

分組查詢語法:

SELECT

FROM

WHERE

GROUP BY

ORDER BY

 

多行函數:一次調用,處理多行數據

AVG:求多行一列的列平均值

--示例:10號部門全部員工平均工資

--示例:每個部門的平均工資

注:分組顯示查詢時,select子句中只能出現分組表達式和分組函數,除此之外的任何列都是非法的。

COUNT

--示例:顯示所有員工的數量

--示例:顯示獎金的人數

注:COUNT會忽略null行

--示例:顯示每個部門的編號,人數

MAX:返回多行一列中最大行的值

--示例:求全部員工中工資最大值

MIN:返回多行一列中最小行的值

SUM:返回多行一列的和

--示例:求平均工資大于2000的部門編號

select deptno,AVG(sal)

from emp

where AVG(sal)>2000

group by deptno;

--結論:WHERE子句中禁止出現聚合函數!如需要將聚合函數的結果作為篩選條件,則在HAING子句中聲明

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!