ORACLE內置函數使用

1、數學函數

ABS(X):返回X的絕對值

CEIL(X):返回大於等於X的最小整數,即向上取整

FLOOR(X):返回小於等於X的最大整數,即向下取整

SQRT(X):返回X的平方根

POWER(X,Y):返回X的Y次冪

EXP(X):返回e的X次冪

LN(X):返回X的對數

LOG(X,Y):返回以X爲底Y的對數

MOD(X,Y):返回X/Y的餘數

SIGN(X):返回X的符號,正數返回1,0返回0,負數返回-1

ROUND(X[,Y]):對X四捨五入,Y爲可選參數,表示四捨五入到小數點後第幾位,若Y爲負值,則表示四捨五入到小數點前第幾位

TRUNC(X[,Y]):截取X,Y爲可選參數,表示截取到小數點後第幾位,若Y爲負值,則表示截取到小數點前第幾位

2、字符串函數

REPLACE(string,from_str,to_str):字符串替換函數,字符串級別的替換,
把from_str整個替換成to_str
例:select replace('ABCDCBA','BCD','H') from dual;
輸出:AHCBA
將字符串 ABCDCBA中的 BCD 整個替換成 H,所以結果就是AHCBA

TRANSLATE(string,from_str,to_str):字符串替換函數,字符級別的替換,把from_str跟to_str字符一一對應替換,
如果from_str比to_str長,超出的字符將從string中去掉,因爲to_str中沒有對應可替換的字符,to_str不能爲空,
translate中的任何參數爲NULL,結果都是NULL
例:select translate('ABCDCBA','BCD','H') from dual;
輸出:AHHA
將字符串 ABCDCBA 中的 B 替換成 H,CD 從字符轉中去掉,因爲沒有可替換的字符,所以結果是AHHA

INSTR(string1,string2[,start_position[,nth_appearence]]):字符串查找函數,查找string2在string1中出現的位置。
string2從string1中檢索,從string1的第start_position(位置)位開始檢索,檢索第nth_appearence(幾次)出現的位置,
start_position和nth_appearence是可選參數
例1:select instr('ABCDCBA','C') from dual;
輸出:3
在字符串 ABCDCBA 中檢索 C 第一次出現是第3個位置

例2:select instr('ABCDCBA','C',4) from dual;
輸出:5
在字符串 ABCDCBA 中從第4位開始檢索 C,第一次出現的位置是第5位,所以輸出5

例2:select instr('ABCDCBA','C',1,2) from dual;
輸出:5
在字符串 ABCDCBA 中從第1位開始檢索 C,檢索第2次出現C的位置,是第5位

PS:instr(字段名,‘字符串’)>0 效果類似與 like
例:
select * from emp where emp_name like '%張%';
select * from emp where instr(emp_name,'張')>0;

CONCAT(char1,char2):字符串連接函數,連接兩個字符串,與||效果相同
例:select concat('my name ','is y') from dual;
輸出:my name is y

TRIM()
1、TRIM(expr1):去除指定字符前後空格 
2、TRIM(LEADING|TRAILING|BOTH expr1 from expr2):從指定字符串expr2的的前面|後面|前後去掉字符expr1,
只能去除單個字符
例1:select trim(leading 'A' from 'ABCDCBA') from dual; 
輸出:BCDCBA
從字符串ABCDCBA前面去掉A

例2:select trim(trailing 'A' from 'ABCDCBA') from dual;
輸出:ABCDCB
從字符串ABCDCBA後面去掉A

例3:select trim(both 'A' from 'ABCDCBA') from dual;
輸出:BCDCB
從字符串ABCDCBA前後分別去掉A

LTRIM()
1、LTRIM(expr1):去除指定字符前面空格 
2、LTRIM(expr1,expr2):從字符串expr1前面去除與expr2匹配的字符,可以去除多個字符
例:select ltrim('ABCDCBA','ACB') from dual;
輸出:DCBA
從字符串ABCDCBA前面去掉了ABCS三個字符

RTRIM()
1、RTRIM(expr1):去除指定字符後面空格 
2、RTRIM(expr1,expr2):從字符串expr1後面去除與expr2匹配的字符,可以去除多個字符
例:select rtrim('ABCDCBA','ACB') from dual;
輸出:ABCD
從字符串ABCDCBA前面去掉了ABC三個字符

LPAD(expr1, n, expr2):用指定字符expr2從左邊開始填充字符串expr1,
參數expr1不存在的話默認用空格填充,直到expr1字符串長度滿足n爲止
例:select lpad('ABC',7,'H') from dual;
輸出:HHHHABC

RPAD(expr1, n, expr2):用指定字符expr2從右邊開始填充字符串expr1,
參數expr1不存在的話默認用空格填充,直到expr1字符串長度滿足n爲止
例:select rpad('ABC',7,'H') from dual;
輸出:ABCHHHH

LENGTH():返回字符串長度
例:select length('ABCDCBA') from dual;
輸出:7

SUBSTR(string,start_position,substring_length):字符串截取函數,從字符串string的start_position位置開始截取字符串,
截取的字符串長度是substring_length。開始位置start_position可爲正數也可爲負數,
爲正數時,從前面開始數開始位置,爲負數時從後面開始數開始位置
例1:select substr('ABCDEF',3,2) from dual;
輸出:CD
從字符串ABCDEF的第三位(C)開始截取2個字符串,所以是CD

例2:select substr('ABCDEF',-3,2) from dual;
輸出:DE
從字符串ABCDEF的倒數第三位(D)開始截取2個字符串,所以是DE

例3:select substr('ABCDEF',3) from dual;
輸出:CDEF
從字符串ABCDEF的第三位(C)開始截取字符串,因爲沒有字符串長度參數,所以默認後面的都截取

例3:select substr('ABCDEF',-3) from dual;
輸出:DEF
從字符串ABCDEF的倒數第三位(D)開始截取字符串,因爲沒有字符串長度參數,所以默認後面的都截取

UPPER(string):字母大小寫轉換函數,將參數全部轉換成大寫字母
LOWER(string):字母大小寫轉換函數,將參數全部轉換成小寫字母
INITCAP(tring):字母大小寫轉換函數,將所有單詞首字母轉換成大寫字母

3、日期函數

MONTHS_BETWEEN(date1,date2);計算date1與date2之間有幾個月,date1-date2

ADD_MONTHS(date,n):若n爲正整數,則返回日期date的n月後的日期;若n爲負整數,則返回日期date的n月前的日期

NEXT_DAY(date,'char'):返回date之後的下一週的指定天的日期,char的值可能是一個表示一天的書或者是一個字符串,如1,'星期一'等

LAST_DAY(date):返回date本月最後一天

ROUND(date[,'fmt']):返回格式化模式fmt四捨五入到指定單位的date,若fmt省略,則四捨五入到最近的日期。
fmt 可以是'YEAR','MONTH','DAY','HH24','MI'
SELECT ROUND(SYSDATE,'YEAR') FROM dual; --四捨五入到最近年的第一天
SELECT ROUND(SYSDATE,'MONTH') FROM dual; --四捨五入到最近月的第一天
SELECT ROUND(SYSDATE,'DAY') FROM dual; --四捨五入到最近周的第一天(星期天爲一週第一天)
SELECT ROUND(SYSDATE,'HH24') FROM dual; --四捨五入到最近整點小時
SELECT ROUND(SYSDATE,'MI') FROM dual; --四捨五入到最近整點分鐘

TRUNC(date[,'fmt']):返回格式化模式fmt截取到指定單位的date,若fmt省略,則截取到最近的日期。
SELECT TRUNC(SYSDATE,'YEAR') FROM dual; --本年的第一天
SELECT TRUNC(SYSDATE,'MONTH') FROM dual; --本月的第一天
SELECT TRUNC(SYSDATE,'DAY') FROM dual; --本週的第一天(星期天爲一週第一天)
SELECT TRUNC(SYSDATE,'HH24') FROM dual; --當前時間整點小時
SELECT TRUNC(SYSDATE,'MI') FROM dual; --當前時間整點分鐘

4、類型轉換函數

TO_CHAR(number[,fmt[,nlsparam]]):將數值型參數轉換成字符型數據,fmt是要轉成字符的格式,nlsparam是使用的語言類型

TO_CHAR(date[,fmt[,nlsparam]]):將日期型數據轉換成字符型數據,fmt是要轉成字符的格式,nlsparam是使用的語言類型

TO_DATE(char[,fmt[,nlsparam]]):將字符型數據轉換成日期型數據

TO_TIMESTAMP(date):將日期型數據轉換成時間戳類型

TO_NUMBER(string[,fmt[,nlsparam]]):將字符串轉換成數值型數據

CAST(expression AS date_type):數據類型轉換函數,將源值expression轉換成date_type類型
(1)轉換列和值
(2)轉換集合

5、其他函數

NVL(expr1,expr2):轉換NULL值爲一個實際的值,expr1爲null時,返回expr2

NVL2(expr1,expr2,expr3):expr1不爲null時,返回expr2;expr1爲null時,返回expr3。
expr1可以是任何數據類型,expr2和expr3可以是除LONG之外任何類型,若expr2和expr3的數據類型不同,
則oracle在比較它們之前將轉換expr3爲expr2的數據類型,除非expr3是一個NULL常數

NULLIF(expr1,expr2):比較expr1和expr2兩個表達式,若相等返回NULL值,
若不相等返回expr1,expr1不能爲NULL值

COALESCE(expr1,expr2,...exprn):從多個表達式中返回第一個非空表達式

DECODE(expr1,search1,result1,search2,result2,...,searchn,resultn,default):
比較表達式expr1和每一個查找表達式search,若表達式值與查找值相等,則返回結果值,
若默認值缺省,當沒有查找值與表達式相等時,返回NULL值

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章