所谓的单行函数就是完成某一具体功能的操作函数,单行函数一共分为一下几种:
字符串函数、日期函数、数值函数、转换函数、通用函数。
单行函数的格式:“返回值 函数名称(参数)”
一、字符串函数
upper 将传入的字符变为大写字母
lower 将传入的字符变为小写字母
initcap 开头首字母大写,其它是小写
length 获得指定字符串的长度
substr 字符串的截取
replace 将新数据替换旧数据
1.将所有字母转化为大小写
① select upper('hello') from emp;
此时会有14行,为了方便查询oracle创建了一个虚拟表dual;select upper('hello') from dual;
②将所有的名字转换为小写
select lower(ename) from emp;
在不区分大小的情况下统一将字母转换为大写或小写
select* from emp where ename =upper('&inputname');
③将雇员姓名以首字母大写的形式保存
select ename,initcap(ename) from emp;
④取的字符串长度
select length('helloworld!') from dual;
select* from emp where length(ename)=5;
⑤截取字符串
截取雇员姓名的前三位字母
select ename,substr(ename,1,3) from emp;
截取每个雇员姓名的后三位字母
select ename,substr(ename,-3) from emp;
以上截取方式只能在oracle中实现,在程序不能运用此方法。
也可以使用以下方式截取后三位字母
select ename,substr(ename,length(ename)-2) from emp;
二、数值函数
数值函数主要进行数字的处理,最为核心的是主要有三个。
round 实现数据的四舍五入
trunc 实现数据的截取
mod 求模(计算余数)
① select round(781.562) from dual;
②trunc和round区别不大,唯一的区别是不会进位
select trunc(781.56),trunc(1512.23),trunc(791.5)
from dual;
③mod
select mod(10,3) from dual;
三、日期函数
1.实现日期的基本操作
sysdate 只显示当前的日期
① select sysdate-7,sysdate+12 from emp;
对于日期而言每个月的天数是不同的,所以直接进行加减运算不是很准确。
②查询雇员的编号、姓名、职位、雇用天数
select empno,ename,job,sysdate-hiredate from emp;
如果直接使用天数来计算年月日,那么最终结果不一定准确。
2.为了准确的进行日期的计算,oracle里面提供了四个日期函数
add_months 在指定的日期上增加月数
months_between 返回两个日期之间的天数
last_day 取得指定日期所在的月
next_day 返回下一个指定的月
①在当前下增加指定的月份
select add_months(sysdate,4),add_months(sysdate,20)
from emp;
②计算雇员到今天为止的雇用月数
select empno,ename,hiredate,
months_between(sysdate,hiredate) from emp;
③计算当期时间所在月的最后一天日期
select last_day(sysdate) from emp;
④计算下期的日期
select next_day(sysdate,'星期二') from emp;
四、转换函数
字符串 to_char 将日期或数字格式化为指定的字符串
日期 to_date 按照指定的转换格式编写字符串后将其变为日期型数据
数字 to_number 将字符串转换为数字
①将日期,时间显示格式化
select to_char(sysdate,'yyyy-mm-dd') from dual;
select to_char(sysdate,'yyyy-mm-dd hh:mi:ss')from dual;
查询2月份的雇员信息
select* from emp where to_char(hiredate,'mm')=2;
拆份年月日
select to_char(sysdate,'yyyy'),to_char(sysdate,'mm'),to_char(sysdate,'dd')
from emp;
②转日期函数
select to_date('2018-4-25','yyyy-mm-dd') from emp;
③转数字函数
select to_number('2') from dual;
oracle中只有字符串的转换最重要,其他都是次要的,数字转换其结果不变。