Oracle_03 内置函数

1.内置函数的分类.

1.1 内置函数:

  • Oracle自带的函数,我能只需要去调用就可以了。

  • Oracle里面的内置函数分为如下几类:
    1.转换函数;
    2.日期函数;
    3.字符函数;
    4.数学函数;
    5.集合函数。


2.转换函数

2.1 to_char();

作用:把一个非字符类型转换为字符类型;

  • 案例1:调用当前的系统日期:
select sysdate from dual;
  • 案例2:日期类型转字符类型:

转换当前系统时间为字符串类型,时间格式为:xxxx-xx-xx xx:xx:xx

select to_char(sysdate,'yyyy-mm-dd hh:mi:ss') from dual;

转换当前系统时间为字符串类型,只显示年月日,时间格式为:xxxx-xx-xx

select to_char(sysdate,'yyyy-mm-dd ') from dual;

转换当前系统时间为字符串类型,并且显示是24小时制,时间格式为:xxxx年xx月xx日 xx:xx:xx

select to_char(sysdate,'yyyy"年"mm"月"dd"日" hh24:mi:ss') from dual;

2.2 to_date();

  • 作用:把字符类型的时间转换为日期类型;

案例1:把字符类型时间 ‘2021-08-18’ 转换成日期类型,格式为:xxxx/xx/xx;

select to_date('2021-08-18','yyyy/mm/dd') from dual;

案例2:把字符类型时间 ‘2021-08-18 11:33:44’ 转换成日期类型,格式为:xxxx/xx/xx xx:xx:xx;

select  to_date('2021-08-18  11:33:44','yyyy/mm/dd hh:mi:ss') from  dual;

2.3 to_number();

  • 作用:把字符字符类型的数字转换为数值类型;
select 100+to_number('200') from dual;

3.日期函数.

3.1 add_months().

  • 作用:在指定的日期上加上指定数量的月份,求当时的日期;

  • 注意点:只能作用于日期类型;

案例1:求当前系统时间100个月之后的日期;

select add_months(sysdate,100) from dual;

案例2:求2020年8月8日,100个月之后的日期;


select add_months(to_date('2020-08-08','yyyy-MM-dd'),100) from dual;

案例3:求2020年8月8日,100个月之前的日期;

select add_months(to_date('2020-08-08','yyyy-MM-dd'),-100) from dual;

3.2 extract().

  • 作用:单独取日期里面的年月日;

  • 注意点:只能作用于日期类型;

案例1:取当前系统时间的年份;

select extract(year from sysdate) from dual;

案例2:取当前系统时间的月份;

select extract(month from sysdate) from dual;

案例3:取当前系统时间的日期;

select extract(day from sysdate) from dual;

案例4:求emp表里面2月份入职的人数;

select count(*) from emp where extract(month from hiredate) = 2;

案例5:求emp表里面每个月份入职的人数;

select extract(month from hiredate),count(*) from emp group by extract(month from hiredate)

3.3 months_between().

  • 作用:求两个时间之间相差的月份;

  • 注意点:只能作用于日期类型;

案例:求2020-2-2和当前系统时间之间相差的月份;

select months_between(sysdate,to_date('2017-2-2','yyyy/mm/dd')) from dual;

3.4 Last_day().

  • 作用:求本月的最后一天;

案例1:求当前月份的最后一天日期;

select last_day(sysdate) from dual;

案例2:求2021年的最后一天;

select  last_day(to_date('2021-12','yyyy-mm'))from  dual;

3.5 Next_day().

  • 作用:求下个指定星期的日期;

  • 注意点:只能作用于日期类型;

案例:求下周六的日期;

select  next_day(sysdate,'星期六') from dual;

4.字符函数.

select upper('abcdAsdfa') from dual;                     --全部转为大写;
 select lower('abcdAsdfa') from dual;                     --全部转为小写;
select ltrim('abcd','a') from dual;                             --去掉左边的字符(第一个字符若是a则去除,反之不去除);
 select rtrim('acccsdfdsccccbcd','c') from dual;        --去掉右边的字符(第一个字符若是c则去除,反之不去除);

	select initcap('adad') from dual;                             --将首字母转换为大写;

	select substr('abcdefghi',3,4) from dual;                  --从第三位开始截,截4个;

	 select instr('abcdefg','c') from dual;                          --判断c的位置,下标从1开始;

	
select concat('aa','bb') from dual;                              --这是拼接的意思,用的少,因为我们可以用||替代;

select ascii('a') from dual;                                            --求a的ic码;
	 
select char(77) from dual;                                              --将ic码转换成对应的值字符;
	
select length('abcd张') from dual;                               --求字符的个数,不是字节的个数;
	
select lpad('abde',9,'x') from dual;                              --左填充,从左边开始用‘x’填充,直到字节的长度变为9为止;
 
select rpad('abde',9,'x') from dual;                               --右填充,从 边开始用‘x’填充,直到字节的长度变为9为止;
 
select decode('c','a',1,'b',2,'c',3) from dual;                 --结果为3,意思是给几个结果进行判断,如果前面的符是a就输出1,如果是b就输出2,如果是c就输出3;

5.数学函数.

select ceil(57.12) from dual;                       --向上取整;
select floor(57.98) from dual;                     --向下取整;

select round(54.99) from dual;                   --结果是55,四舍五入;

select round(54.59,1) from dual;                --四舍五入并且保留小数点后1位数;

select power(3,2) from dual;                      --3的2次方;

select mod(6,7) from dual;                            --取余/模;

select sqrt(4) from dual;                               --开根号;

select sign(0) from dual;                               --如果是正数结果就为1,如果是负数结果就为-1,如果是0,结果就为0;

6.综合案例.

如果薪水小于3500就输出“要努力”,如果等于3500就输出“刚刚好”,如果大于3500就输出“要纳税”

select  ename,decode(sign(sal-3500),1,'要纳税',0,'刚刚好',-1,'要努力') from emp;

7.聚合函数.

sum、max、min、avg、count。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值