在oracle中,函数又被称PL/SQL子程序,是作为数据库对象存储在oracle数据库中的;函数会对传递进来的参数进行处理,并返回一个处理结果,也就是返回一个值。oracle函数可分为两类:系统函数和用户自定义函数。

本教程操作环境:Windows7系统、Oracle 11g版、Dell G3电脑。 Oracle函数的定义 函数是作为数据库对象存储在oracle数据库中,函数又被称为PL/SQL子程序。 函数会对传递进来的参数进行处理,并返回一个处理结果,也就是返回一个值。通常用于返回特定的数据。 oracle函数可分为两类:系统函数和用户自定义函数。 ORACLE函数之单行函数 1.字符函数 | 函数名 | 作用 | 示例 | 结果 |
|---|
| initcap(char) | 首字母大写 | initcap('nice') | Nice | | lower(char) | 转为小写 | lower('NICE') | nice | | upper(char) | 转为大写 | upper('nice') | NICE | | ltrim(char,set) | 左剪 | ltrim('nice','ni') | ce | | rtrim(char,set) | 右剪 | rtrim('nice','e') | nic | | concat(char1,char2) | 字符串连接 | concat('ni','ce') | nice | | substr(char,pos,len) | 取子串 | substr('nice',2,2) | ic | | instr(char,substr) | 查子串位置 | instr('nice','c') | 3 | | translate(char,key,value) | 按字符映射翻译 | translate('nice','ne','01') | 0ic1 | | replace(char,old,new) | 字符串替换 | replace('nice','c','cc') | nicce |
2.数值函数 | 函数名 | 作用 | 示例 | 结果 |
|---|
| abs(n) | 取绝对值 | abs(-3) | 3 | | mod(m,n) | 取余 | mod(3,2) | 1 | | sign(n) | 取符号 | sign(-3) | -1 | | ceil(n) | 向上取整 | ceil(3.2) | 4 | | floor(n) | 向下取整 | floor(3.2) | 3 | | round(m,n) | 四舍五入为指定小数位数 | round(3.236,2) | 3.24 | | power(m,n) | m的n次幂 | power(3,2) | 9 | | sqrt(n) | 平方根 | sqrt(4) | 2 | | trunc(m,n) | 截断 | trunc(3.233,2) | 3.23 | | sin(n) | 正弦 | sin(0) | 0 | | cos(n) | 余弦 | cos(0) | 1 |
3.日期函数 | 函数名 | 作用 | 示例 | 结果 |
|---|
| months_between(date1,date2) | 返回两日期间的月份(若date1在日历中比date2早,则返回一个负数,反之则返回一个正数) | months_between('01-8月-2020',‘01-8月-2020’) | 0 | | add_months(date,m) | 返回把月份数加到日期上的新日期 | add_months('25-8月-2020',-1) | 25-7月-2020 | | next_day(date,week) | 返回指定新日期后的星期对应的新日期 | next_day('23-8月-2020',‘星期一') | 24-8月-2020 | | last_day(date) | 返回指定日期所在月的最后一天 | last_day('25-8月-2020') | 31-8月-2020 | | round(date,p) | 按指定格式对日期进行四舍五入 | round(to_date('25-8月-2020'),’YEAR‘) | 1-1月-2021 | | trunc(date,p) | 对日期按指定方式截断 | trunc(to_date('25-8 月-2020'),'YEAR') | 01-1月-2020 |
注: - p为YEAR,round按1-6月和7-12月,四舍五入到最近的yyyy年1月;trunc截取到本年第一天。
- p为MONTH,round按1-15日和16-30日,四舍五入到最近mm月的1日;trunc截取到本月第一天。
- p为DAY,round按周一至周三和周四至周日,四舍五入到最近的周日。trunc截取到本周第一天。
oracle函数之多行函数 - 对查询数据进行统计
不能和普通字段及单行函数混合使用,除非分组 | 函数名 | 作用 |
|---|
| max(字段名) | 返回该字段最大值 | | min(字段名) | 返回该字段最小值 | | sum(字段名) | 返回该字段的和 | | avg(字段名) | 返回该字段平均值 | | count(*) | 返回表记录数 | | count(字段名) | 返回非空值数量 | | count(distinct 字段名) | 返回去重后字段值数量 |
oracle函数之转换函数 to_number(数值类型的字符):将字符转换为数值 to_char(数值或日期):将数值或日期转换为字符 指定显示格式: 9表示占位,例:999,999,999会将数字按三个一组逗号隔开。 0表示占位,若实际数据位数不足,则用0补位。 L表示人民币符号,$表示美元符号。 注:数值和字符之间可隐式转换。 to_date(日期格式的字符):将字符转换为日期(一般新增使用,查询用to_char) 常用日期格式:yyyy-mm-dd yyyy/mm/dd 'yyyy"年"mm"月"dd"日"' 注:字符必须符合日期格式;oracle默认转换格式为日月年,例'25-8月-2020'。
oracle函数之其他函数 nvl(字段名,新的值):若字段值不为null,则返回该字段值;若为null,则返回新的值。 nvl2(字段名,处理1,处理2):若字段值不为null,则执行处理1;若为null,则执行处理2。 decode(字段名,值1,处理1,值2,处理2,值3,处理3,...,公共处理):若字段值和decode中条件值相同,则执行对应的处理。若都没有,则执行公共处理。 |