Oracle的函数 函数
Oracle函数能够分为单值函数和分组函数两大类,单值函数又分为字符函数、日期和时间函数、数字函数、转换函数和混合函数:分组函数右count、max、min、avg、sum,均可以和group by 搭配使用。 测试
单值函数 spa
一、字符函数 ci
l 字符串链接函数 字符串
问题:把员工的姓名和工做类型连在一块儿使用"-"分隔 数学
函数:concat(字符串1,字符串2) it
select concat(concat(ename,'-'),job) from |
扩展点:字符串链接符号
" || " ast
select ename || '-' || job from emp; 扩展 |
l 右对齐函数
问题:将员工的姓名右对齐显示
函数:lpad(待处理的字符串,预留位置,填充符号)
select lpad(ename,10,' ') from emp; |
l 字符串截取函数
问题:截取员工姓名的前3个字符和字符4之后的内容显示
函数:substr(字符串,起始位置,截取的个数)
substr(字符串,起始位置) --默认截取到最后
select ename, |
l 字符查找函数
问题:字母'T'在员工姓名中第一次出现和第二次出现的位置
函数:instr(字符串,查找的字符,查找的起始位置,出现的次数)
select ename, instr(ename,'T',1,1) as A, |
select ename from emp where |
问题:员工姓名首字母大写显示
函数:initcap(字符串)
select initcap(ename) from emp; |
问题:将员工姓名大写转换
函数:upper(字符串)/lower(字符串)
select upper(ename) , lower(ename) from |
问题:将姓名中的M所有替换成'*'显示
函数:replace(字符串,带替换的字符,替换后的字符)
select replace(ename,'M','*') from emp; |
l 字符串长度函数
问题:找出姓名长度大于5的员工姓名
函数:length(字符串)
select ename from emp where |
二、日期函数
l 系统时间
问题:返回系统的当前时间
函数:sysdate
说明:1、函数没有“( )”
2、dual 是一张无心义的表,在Oracle专门用于函数的测试
select sysdate from dual; |
将时间类型转成字符类型
函数:to_char(时间数据,格式)
select to_char(sysdate,'yyyy-mm-dd |
格式:yyyy 年
mm 月
dd 日期
d 一周中的第几天
ddd 一年中的第几天
day 周
month 月份
hh24 24小时制
l 日期修改函数
问题:将系统时间添加2个月显示
函数:add_months(时间数据,添加的月份)
select add_months(sysdate,2) from dual; |
l 日期差函数
问题:显示员工入职时间的月份统计
函数:months_between(时间1,时间2)
select |
三、
转换函数
l to_char()见上例
l 时间转换函数
函数:to_date(时间数据字符串,格式)
insert into 表名 values(to_date('2009-12-12','yyyy-mm-dd')); |
案例1:查询在12年前参加工做的员工
Select |
案例2:查询在当月倒数第三天参加工做的员工
函数:last_day(时间数据) -> 返回该日期所在月份的最后一天
select ename,hiredate from emp where |
案例3:查询每一个员工的工做天数
格式:时间1-时间2 --> 返回相差的天数
select ename,hiredate,sysdate-hiredate |
四、
数学函数
l
round(数字) 四舍五入
案例:按每个月30天计算员工的每日薪水,要求计算结果四舍五入到小数点后2位
函数:round(数字,精度)
select ename,round(sal/30,2) from emp; |
l trunc(数字) 取整函数->只保留整数部分
案例:查询员工工做了多少个月
select ename,trunc(months_between(sysdate,hiredate)) from emp; |
l floor(数字) 向下取
floor(1.9) -> 1
l
ceil(数字) 向上取
ceil(1.1) -> 2 花费
l
abs(数字) 取绝对值函数
l
mod(数字1,数字2) 取余函数
mod(5,4) -> 1
l
power(数字,n次方)
power(2,4) -> 16
做者:中软卓越天津ETC