Oracle 函数

本文最后更新于:2024年3月18日 凌晨

Oracle 函数

nvl (表达式1,表达式2)

  • 如果表达式1为空值,nvl返回值为表达式2的值,否则返回表达式1的值。
  • 该函数的目的是把一个空值(null)转换成一个实际的值,其表达式的值可以是数字型,字符型和日期型,但是表达式1和表达式2的数据类型必须为同一个类型。

实例

1
2
--将薪资与奖金合并为月收入,如果奖金为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;
select current_date from 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')+4 from dual;

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!