分享

Oracle中的函数

 jp乞巧楼 2015-08-31

Oracle中的函数

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;

fun

Upper(char)

转换为大写

select upper(‘sun’) from dual;

SUN

Ltrim(char,set)

左裁减,set不写默认裁减空格

select ltrim(‘xyzabc’,’xyz’) from dual;

abc

Rtrim

和左裁减相反

Select rtrim(‘xyzabc’,’abc’) from dual;

Xyz

Translate(char,from,to)

fromto的翻译模式,去匹配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;

100

Power(m,n)

Mn次幕

Select power(4,3) from dual;

64

Mod(m,n)

mn的余

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

 

 

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多