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) | 按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; | 100 |
Power(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 |
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/9664444/viewspace-912175/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/9664444/viewspace-912175/