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 注:Oracle中1個漢字算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子句中聲明