--将薪资与奖金合并为月收入,如果奖金为null则转换为0 select ename,sal,comm,sal+nvl(comm,0) as 月收入 from emp;
concat(x,y)
连接字符串 x 和 y
实例
1 2 3 4 5 6
--查询所有员工的姓名和工种。 select ename,job from emp; --将员工姓名和工种一起显示。 select ename||job namejob from emp; --使用函数。 select concat(ename,job) namejob from emp;
instr(x,str,start,n)
在 x 中查找 str,可以指定从 start 开始,也可以指定从第 n 次开始。
实例
1 2 3 4
--查找字符串"helloworld”中"e”所在位置。 select instr('helloworld','e') from dual; --查找字符串"helloworld”中"e”所在位置,从第6次开始。 select instr('helloworld','l',6) from dual;
substr(x, start,length)
返回 x 的字符窜,从 start 处开始,截取 length 个字符,缺省 length,默认到结尾。
实例
1 2 3 4 5 6 7 8
--对字符串进行特定的截取。 select substr('abcedrt',3,3) from dual; --显示员工姓名的第一个字母。 select substr(ename,1,1) from emp; --显示员工姓名的第三四个字母。 select substr(ename,3,2) from emp; --显示员工姓名的最后一个字母。 select ename,substr(ename,length(ename)) from emp;
日期函数
sysdate:当前系统时间。
current_date:返回当前系统日期。
实例
1 2 3
--获取当前系统的时间。 select sysdate from dual; selectcurrent_datefrom dual;
add_months(d1,n1):返回在日期 d1 基础上再加 n1 个月后新的日期。
不需要考虑大小月的事情,系统会自动帮我们解决。
1 2
--查询所有员工的转正日期, 3个月的试用期。 select empno,ename,hiredate,add_months(hiredate,3)转正日期 from emp;
last_day(d1):返回日期d1所在月份最后一天的日期。
1 2
--查询当前月的最后一天是多少号。 select last_day(sysdate) from dual;
months_between(d1,d2) :返回日期 d1 到日期 d2 之间的月数。
1 2
--查询所有员工到现在已经工作了多久。 select sysdate,hiredate,months_between(sysdate,hiredate) from emp;
to_char(x,c) :将日期或数据 x 按照 c 的格式转换为 char 数据类型。
1 2 3 4
--查询员工的入职日期,并按月日年格式显示。 select hiredate,to_char(hiredate,'mm-dd-yyyy')日期 from emp; select hiredate,to_char(hiredate,'mm"月"dd"日"yyyy"年"')日期 from emp; --在使用中文的时候,加上双引号,表示原样输出。
to_date(chars,charFormat):将字符(一定格式)转成日期。
1 2
select to_date('2020/09/16','yyyy/mm/dd') from dual; select to_date('2020/09/16','yyyy/mm/dd')+4from dual;