Oracle常用內建函式

2021-10-02 04:52:39 字數 4663 閱讀 5672

單行函式分類:

1.數值函式:

2.字元函式

3.日期函式

4.轉換函式

5.通用函式

1.abs:絕對值 abs(-1.2) = 1.2

2.ceil:刪除小數點,向上取整 ceil(4.3) = 5

3.floor:刪除小數點,向下取整 floor(4.3) = 4

4.power:指數函式 power(4,3) = 64

5.rand:生產0~1的隨機數 rand() = ?

6.round:四捨五入,指定保留的小數字 round(2.2345,2) = 2.23

7.sqrt:平方根,不能是負數 sqrt(64) = 8

8.trunc:按指定小數字裁剪,沒有四捨五入 trunc(12.2356,3) = 12.235

9.mod:求餘數 mod(25,8) = 1

1.大小寫轉換

1.1 upper 全部大寫

1.2 lower 全部小寫

1.3 initcap 首字母大寫

2.處理函式

2.1 concat 連線字串

2.2 substr 擷取字串

2.3 length 字串長度

2.4 instr 判定字串釋放會出現在被查詢的字串中,並返回首次出現的位置 instr('abcd','c') = 3

2.4.1 instr('原字串' , '匹配字串' , 從第幾個位置開始匹配 , 第幾個以及匹配上的) instr('abcabcabc','abc',-2,2) = 4 從右邊開始第二個字元開始匹配,匹配上的第二個的開始位置的4

2.5 lpad 從左邊開始,返回指定長度的字串,不夠長度就使用字段字串填充 lpad('123',5,'*') = '**123' / lpad('12345',2) = 12

2.6 rpad 從右邊開始返回指定長度字串,不夠就使用指定字串進行填充

2.7 trim 刪除字串或者數字的頭部/尾部的給定字串 trim('*' from '***123***') = '123' / 預設去掉兩邊空格

2.7.1 可以指定去掉左邊的字串 trim(leading '*' rfom '**123***') = '123***'

2.7.2 可以指定去掉右邊的字串 trim(trailing '*' from '***123***') = '***123'

2.7.3 可以指定去掉兩邊的字串 trim(both '*' from '***123***') = '123'

2.8 ltrim / rtrim 類似trim,只是左邊右邊 ltrim('***123***','*') = '123***'

2.9replace 替換 replace('***123***','123','abc') = '***abc***'

3.0 substr 擷取指定長度的字串,注意不同規則

3.0.1 substr('***123***',3,5) = '123**' 從第三個位置開始擷取5個字元

3.0.2 substr('***123***,5') = '23***' 指從第(5-1) 個位置擷取後邊的所有

3.0.3 substr('***123***',-5,3) = '23*' 從右邊往左數,第5個開始擷取3個字元

3.0.4 substr('***123***,-4') = '3***' 從右邊開始擷取4個字元

1.sysdate : 獲取當前系統時間

2.months_between : 得到兩個日期之間的月份

3.add_months : 增加月份數

4.next_day : 返回下個指定星期的準確日期

5.last_day : 當月最後一天

6.round : 對日期進行四捨五入

7.trunc : 對日期進行擷取

示例:1.

select to_char(sysdate , 『cc ww w d ddd yyyy/mm/dd year month day』) from dual;

結果: 21 02 2 3 014 2020/01/14 twenty twenty 1月 星期二

解釋:cc : 世紀

ww : 一年中的周

w : 乙個月的周

d : 星期幾

ddd : 一年中的第幾天

yyyy/mm/dd : 年月日

year : 年

month : 月

day : 日

2.返回當天星期幾

select to_char(sysdate,『day』) from dual;

結果: 星期二

3.返回月份差

select months_between(『20-1月 -20』,『15-3月 -19』) from dual;

結果:10.1612903225806

4.返回指定下個星期幾的日期

select next_day(sysdate,『星期二』) from dual;

結果:2020/1/21 10:03:59

5.當月最後一天

select last_day(sysdate) from dual;

結果:2020/1/31 10:04:53

主要有三:

to_char

to_number

to_date

1.to_char

轉成指定格式日期

select to_char(sysdate,『yyyy-mm-dd hh12:mi:ss』) from dual;

結果: 2020-01-14 10:11:25

加上fm可以去掉01月前面的0

select to_char(sysdate,『fmyyyy-mm-dd hh12:mi:ss』) from dual;

結果:2020-1-14 10:11:44

數值轉換字串

select to_char(12345678.900 , 『l99,999,999.9999』) from dual;

結果:¥12,345,678.9000

解釋:(『l99,999,999.9999』 )

l:代表強制使用當地貨幣符號

$:顯示美元符號

9:代表乙個數字

0:強迫顯示0

.:顯示乙個小數點

,:顯示乙個千分位分隔符

2.to_number

把字串轉數值型

select to_number(』$123,122.34』,』$000,000.0000』) from dual;

結果:123122.34

將十進位制數值轉成十六進製制數值

select to_number(12345,『******』) from dual;

結果:74565

3.to_date

select to_date(『20190101』,『yyyy-mm-dd』) from dual;

結果:2019/1/1

1.decode (value,if1,then1,if2,then2,if3,then3,…,else)

select decode(5,『5』,』[0-5]』,『10』,』[6-10]』,』[~]』) from dual;

結果:[0-5]

2.greatest(n1,n2…)返回序列中最大值

select greatest(1,2,3,6,8,1,2,9) from dual;

結果:9

3.least(n1,n2…)返回序列中最小值

select least(1,2,3,4,5,6,2,1,2) from dual;

結果;1

4.nullif(c1,c2) 如果c1=c2 返回null,否則返回c1

select nullif(『4』,『4』) from dual;

結果: 『4』

5.nvl(c1,c2) 如果c1=null則返回c2,否則返回c1

select nvl(』』,『3』) from dual;

結果:『3』

6.nvl2(c1,c2,c3) 如果c1不為null則返回c2,否則返回c3

select nvl2(』』,『a』,『b』) from dual;

結果:b

7.chr()返回字符集對應的字元

select chr(97) from dual;

結果:a

8.concat(c1,c2)連線字串 , 等同於 ||

select concat(1,『3』) from dual;

select 1 || 『3』 from dual;

結果: 都是 『13』

9.initcap() 將第乙個字母大寫,其餘小寫

select initcap(『abc』) from dual;

結果: abc

10.nls_initcap() 等同於 initcap()

select nls_initcap(『abc』) from dual;

結果:abc

11.ascii() 把字元轉換數字 , 和chr()相反

select ascii(『a』) from dual;

結果:a

12.dbtimezone 返回資料庫當前時區

select dbtimezone from dual;

結果: +00:00

Oracle內建函式

1.數值函式 floor n 小於等於數值n的最大整數 2.5 2 mod m,n m除以n的餘數 2 7 2 power m,n m的n次方 2 3 8 round n,m 將n四捨五入,保留小數點後m位 3.4 3 sign n n 0返回0,n 0返回1,n 0返回 1 8 1 sqrt n ...

oracle 內建函式

單行函式 查詢表檢視時每行返回乙個結果 集合函式 多行記錄返回乙個結果 取絕對值,如果引數可以隱式轉化為數值也能使用 select abs 100 abs 100 from dual 取餘select mod 10,3 mod 10 3 from dual 符號函式,大於0返回1 否則0 selec...

常用內建函式

print bytes 你好 encoding utf 8 print bytes 你好 encoding utf 8 decode 解碼 print bytes 你好 encoding gbk 輸出 b xe4 xbd xa0 xe5 xa5 xbd 你好b xc4 xe3 xba xc3 pri...