Oracle中的函式

2021-09-30 08:32:23 字數 4514 閱讀 6164

1.單行函式也稱標量函式,對於從表中查詢的每一行,該函式都返回乙個值.單行函式可用與select子句中,也可用於where子句中.單行函式大致分為:

>.日期函式

>.字元函式

>.轉換函式

>.其他函式

1.日期函式

>.add_months: add_months(d,n) d是日期 n表示月數

select addmonths(sysdate,1) from dual;

>.months_between months_between(d1,d2) 如果d1晚與d2,則結果為正數,否則為負數.如果d1和d2為某月中的同一天後月份的最後一天,則結果為整數,否則oracle將根據乙個月31天來計算結果的小數部分

select months_between(date'2005-2-10',date'2007-3-10') from dual; =-25 差25個月

>.last_day last_day(d) 返回日期當月的最後一天的日期值

>.round round(d,[fmt]) 次函式返回日期值,次日期四捨五入為格式模型指定的單位.fmt為可選項,預設捨入最靠近的那一天

select round(sysdate) from dual; 結果為sysdate當天的日期

select round(sysdate,'year') from dual; 如果sysdate中的月在7月1日之後則返回下一年的1月1日,否則為當年的1月1日

select round(sysdate,'month') from dual; 捨入到月的第一日

select round(sysdate,'day') from dual; 最近的星期日

>.trunc trunc(d,[fmt])與round不同的是:他只舍不入

select trunc(date'2005-8-27','year') from dual; =2005-1-1

>.next_day next_day(d,day) d表示日期,day表示一周中的任何一天.

select next_day(sysdate,'星期二') from dual; 結果為sysdate後的第乙個星期二,引數'星期二'也可以用整數3表示.

>.extract extract(fmt from d) 提取日期中的特定部分.

select extract(year from date'2005-2-10') from dual; 結果為2005

注意次處的fmt不要使用''

2.字元函式

函式

說明

輸入

輸出結果

initcap(char)

首字母大寫

select initcap(『hello』) from dual;

hello

lower(char)

轉換為小寫

select lower(『fun』) from dual;

funupper(char)

轉換為大寫

select upper(『sun』) from dual;

sunltrim(char,set)

左裁減,set

不寫預設裁減空格

select ltrim(『xyzabc』,』xyz』) from dual;

abcrtrim

和左裁減相反

select rtrim(『xyzabc』,』abc』) from dual;

xyztranslate(char,from,to) 按

from到to

的翻譯模式

,去匹配

char

中存在的字元並替換

select translate(『jack』,』abcd』,』1234』) from dual;

j13k

replace(char,search_str,replace_str) 在

char

中查詢srearch_str

並替換成

replace_str

select replace(『abcd』,』ab』,』fg』) from dual;

fgdc

instr(char,substr)

查詢子串位置:從

1開始,未找到時為0

select instr(『worldwide』,』d』) from dual; 5

substr(char,pos,len) 從

pos位置開始,取

len的長度

select substr(『abcd』,2,2) from dual; bc

concat(char1,char2)

連線字串

select concat(『hello』,』world』) from dual;

helloworld

其他字元函式:

chr(ascii):

根據acsii碼返回對應的字元

lpad(char,len,to):

指定長度為len,不夠長就在左邊用to填充,若char的長度大於len,則取左邊的指定len,右邊捨掉,如:

select lpad('function',15,'=') from dual; 結果:*****=function 若:

select lpad('function',5,'=') from dual;結果funct 取5個的長度

rpad和lpad正好相反.

trim和ltrim和rtrim一樣,trim捨去左右兩邊的 預設也為捨去空格.

當指定leading 選項時,與ltrim類似,裁減左邊的字元

select trim(leading 9 from 9992434999) from dual;結果2435999 開頭的9被去掉了,一旦遇到9以外的數字,將停止操作

當指定trailing選項時,則正好與leading 相反

select trim(trailing 9 from 9992434999) from dual;結果9992434

當不指定時 去掉左右兩邊的字元

select trim(9 from 9992434999) from dual;結果2434

decode(expr,search1,result1,search1,result2)

與translate不同的是,decode進行逐行逐個值的替換,translate進行逐行逐個字元的替換

數字函式函式

說明 輸入

結果abs(n)

取絕對值

select abs(-15) from dual; 15

ceil(n)

向上取整(大於

n的最小整數)

select ceil(15.1) from dual; 16

sin(n) 正玄

select sin(1.571) from dual;

0.99999979

cos(n) 餘玄

select cos(0) from dual; 1

sign(n)

取符號(正返回

1,負返回-1)

select sign(-15) from dual; -1

floor(n)

向下取整

(不大於

n的最大整數)

select floor(100.2) from dual;

100power(m,n) m

的n次幕

select power(4,3) from dual; 64

mod(m,n) 取

m除n的餘

select mod(10,3) from dual; 1

round(m,n)

四捨五入小數字為n

select round(100.245,2)from dual

100.25

trunk(m,n)

截斷小數字為

n只舍不入

select trunk(100.245,2) from dual

100.24

sqrt(n)

平方根select sqrt(4) from dual 2

oracle中的函式

1.函式建立 warning 2,1 plw 05018 count num authid句 省略 値 definer 使用 create or replace function count num in in test cur.type return number asout num number...

Oracle中的函式

b 字元函式 b 名稱 描述 b concat 字串1,字串2 b 將字串1和字串2 連線成乙個新的字串 示例 select concat job ename from emp b lpad 字段,總的大小,填充字元 b 左填充即向右對齊 示例 select empno,lpad sal,10,fr...

oracle中的nvl函式

格式為 nvl string1,replace with 功能 如果string1為null,則nvl函式返回replace with的值,否則返回string1的值,如果兩個引數都為null 則返回null。注意事項 string1和replace with必須為同一資料型別,除非顯式的使用to ...