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 ...