2.3.4 PL/SQL中的函数
SQL*PLUS提供用于执行特定操作的特定函数。函数可以接受一个或多个参数,并返回一个值。Oracle大体上将函数分为单行函数和分组函数,下面将详细讲解。
1. 日期函数
SQL*PLUS日期函数产生具有date数据类型的输出结果,但返回数字的months_between日期函数除外。
SQL*PLUS日期函数包括Add_months(d,n)、Last_day(d)、Months_between(d1,d2)、Round(d,[fmt])、Next_day(d,day)、Truncate(d,[fnt])、Greatest和New_time(date,'this','other')等,具体信息如表2-13所示。
表2-13 SQL*PLUS日期函数
函 数 名 称 |
解 释 |
Add_months(d,n) |
Add_months日期函数在对指定的日期增加指定的月数后返回一个日期 |
Last_day(d) |
返回月末最后一天相应的日期 |
Months_between(d1,d2) |
返回两个日期之间的月份 |
Round(d,[fmt]) |
此函数返回日期,并且此日期舍入到格式模型所指定的单位 |
Next_day(d,day) |
返回d和day指定的日期 |
Truncate(d,[fnt]) |
此函数返回日期,其时间部分截断为格式模型所指定的单位 |
Greatest |
此函返回参数列表中的最晚日期 |
New_time(date,'this','other') |
此函数显示日期列或日期常数在其他时区的时间和日期 |
2. 字符函数
Oracle支持的字符函数如表2-14所示。
表2-14 Oracle中的字符函数
函 数 |
输 入 |
输 出 |
Lower(char) |
SELECT lower('FUN') from dual |
fun |
Upper(char) |
SELECT upper('fun') from dual |
FUN |
Ltrim(char,set) |
SELECT ltrim('abcdefg','abc') from dual |
Defg |
Rtrim(char,set) |
SELECTrtrim('abcdefg','efg') from dual |
Abcd |
Tanslate(char,from,to) |
SELECT translate('how do you do','h','s') from dual |
Sow do you do |
Instr(char,m,n) |
SELECT instr('worldwide','d') from dual |
5 |
Substr(char,m,n) |
SELECT substr('abcdefg',4,2) from dual |
De |
Concat(expr1,expr2) |
SELECT concat('Hello','world')from dual |
Hello world |
注意:
Trim函数合并了Ltrim函数和Rtrim函数的功能。
3. 数字函数
这里只选择几个数字函数做出解释。具体内容如表2-15所示。
表2-15 数 字 函 数
函 数 |
解 释 |
实 例 |
Abs |
返回绝对值 |
SELECT ABS(-10) from dual=10 |
Power(m,n) |
返回m的n次方 |
SELECT power(4,2) from dual=16 |
Mod(m.n) |
返回m除以n后的余数 |
SELECT mod(10,3) from dual=1 |
Sign |
返回值的符号,无论值的大小 |
SELECT sign(-32) from dual=–1 |
4. 分组函数
Oracle中的分组函数有AVG、MIN、MAX、SUM、COUNT等,用法与SQL Server中相同,这里就不再赘述。