oracle 快速入门之第三章 内置函数

一:内置函数基本概念:

编程语言中预先定义的函数。

具体:嵌入到主调函数中的函数称为内置函数,又称内嵌函数。 作用是提高程序的执行效率,大多编程语言都有自己的内置函数,如javascript内置函数 等。 内置函数的存在极大的提升了程序员的效率和程序的阅读。

内置函数基本都在查询语句中。

二:转换型函数

  1. to_number 将内容转换成数值型
  2. to_char 将内容转换成字符串型
  3. to_date  将内容转换成日期格式

注意:转换函数中提供的日期格式如果含有中文必须使用双引号括起来,否则会提示格式错误 

(1)to_number 将内容转换成数值型

select '123'+123 from dual;
select to_number('123')+123 from dual;

select 123 || '123' from dual;

(2)to_char 将内容转换成字符串型
select to_char(123) from dual;

select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;
--转换函数中提供的日期格式如果含有中文必须使用双引号括起来,否则会提示格式错误
select to_char(sysdate,'yyyy"年"mm"月"dd"日" hh24:mi:ss') from dual;

(3)to_date  将内容转换成日期格式
select to_date('2010-1-1','yyyy-mm-dd') from dual;

三:日期函数

  1. sysdate /systimestamp  获取当前的系统时间
  2. add_months(date,number) 增加|减去指定的月份
  3.  months_between(date,date)  求月份差
  4. extract(xx from date)  求指定日期的年份|月份|日
  5. last_day(date) 求当前提供的日期的这个月份的最后一天
  6. next_day(date,week) 求当前日期后指定的星期几的那一天
  7. round(date) 四舍五入
  8. trunc(date) 截断

--获取当前的系统时间  
select sysdate from dual; 
--12-2月 -22 03.07.52.088000 下午 +08:00
select systimestamp from dual;
--add_months(date,number) 增加|减去指定的月份  
select add_months(sysdate,2) from dual;
select add_months(sysdate,-1) from dual;

select add_months(to_date('2010-1-1','yyyy-mm-dd'),10) from dual;

-- months_between(date,date)  求月份差  
select months_between(sysdate,to_date('2020-1-1','yyyy-mm-dd')) from dual;

--extract(xx from date) 1 2 求指定日期的年份|月份|日  
select extract(day from sysdate) from dual;--12 
select extract(month from sysdate) from dual;--2
select extract(year from sysdate) from dual;--2022

--last_day(date) 求当前提供的日期的这个月份的最后一天
select last_day(sysdate) from dual;

--next_day(date,week) 求当前日期后指定的星期几的那一天。
select next_day(sysdate,'星期日') from dual;
select next_day(sysdate,'星期四') from dual;

--round(date) 四舍五入
select round(sysdate) from dual;
select round(to_date('2022-2-12 08:00:00','yyyy-mm-dd hh24:mi:ss')) from dual;
--trunc(date) 截断
select trunc(to_date('2022-2-12 08:00:00','yyyy-mm-dd hh24:mi:ss')) from dual;
select trunc(to_date('2022-2-12 23:00:00','yyyy-mm-dd hh24:mi:ss')) from dual;

案例:查询emp员工信息表   求出2月份呢入职的人有那些人?

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

案例:求每个月份入职的人数?

select extract(month from hiredate) as 月份,count(*) as 人数 from emp
group by extract(month from hiredate)

四:字符串函数

  1. initcap(varchar2) 将字符串的首字母转换成大写
  2. lower(varchar2) 转换小写
  3. upper(varchar2) 转换大写
  4. ltrim/rtrim(varchar2,varchar2) 去除左右两端的空格
  5. replace(varchar2,varchar2,varchar2) 替换函数
  6. instr(varchar2,varchar2[,number])在目标字符串中查找指定字符的下标位置
  7. substr(varchar2,number[,number]) 截取 从指定位置开始截取,就去到后面几位数
  8. concat(varchar2,varchar2)   ||  拼接
  9. ascii(varchar2) 将一个字符转换成对应的ASCII值 a-97  A-65  0-48
  10. chr(number) 将一个ascii值转换成对应的字符
  11. lpad/rpad(varchar2,number,varchar2) 左右填充指定的内容
  12. length(varchar2) 长度(字符)
  13. decode(自定义) java的if语句
--initcap(varchar2) 将字符串的首字母转换成大写
select initcap('helloworld') from dual;
--	lower(varchar2) 转换小写
select lower('HELLO world') from dual;
--	upper(varchar2) 转换大写
select upper('hello world My') from dual;
--ltrim/rtrim(varchar2,varchar2) 去除左右两端的空格
select length('     hello   ') from dual;
select ltrim('     hello   ') from dual;
select length(ltrim('     hello   ')) from dual;

select rtrim('     hello   ') from dual;
--	replace(varchar2,varchar2,varchar2) 替换函数
select replace('hello','e','abc') from dual;
--instr(varchar2,varchar2[,number])在目标字符串中查找指定字符的下标位置
select instr('lkashdkjsaldjlksajdl','l') from dual;
--从指定位置在目标字符串中查找指定字符的下标位置。
select instr('lkashdkjsaldjlksajdl','l',2) from dual;
--substr(varchar2,number[,number]) 截取
--从指定位置开始截取,就去到后面几位数。
select substr('zz is a nice man',3,6) from dual;
select substr('akshfdsahkjfsa',6) from dual;
--concat(varchar2,varchar2)   ||  拼接
select 'a'||'b' from dual;
select concat('b','nb') from dual;
--	ascii(varchar2) 将一个字符转换成对应的ASCII值
--a-97  A-65  0-48
select ascii('a') from dual;
--chr(number) 将一个ascii值转换成对应的字符
select chr(97) from dual;--a
--	lpad/rpad(varchar2,number,varchar2) 左右填充指定的内容
select lpad('hello',20,'a') from dual
select rpad('hello',20,'a') from dual
--length(varchar2) 长度(字符)
select length('宋军好hello') from dual;
--decode(自定义) java的if语句
select decode('sb','nb','优秀','sb','屌丝','xb','大逗比') from dual;

案例:查询emp表,工资大于3000  标注大富豪 工资等于3000 标注 小富豪 工资低于3000 标注 回家种田

select ename,sal,
decode(sign(sal-3000),'1','大富豪','0','小富豪','-1','回家种田') as 备注
from emp;

五:数学函数

  1. sign 判断正负数
  2. abs(number)绝对值
  3. ceil(number)向上取整
  4. floor(number)向下取整
  5. round(number,number)四舍五入
  6. trunc(number,number)截断小数位
  7. sign(number)判断正负数
  8. sqrt(number)开平方根
  9. mod(number,number)取余
  10. power(number,number)求幂
--sign 判断正负数
select sign(100) from dual;--1
select sign(0) from dual;-- 0
select sign(-100) from dual;-- -1
--abs(number)绝对值
select abs(-10) from dual;
--ceil(number)向上取整
select ceil(12.00001) from dual;
--floor(number)向下取整
select floor(12.999999)from dual;
--round(number,number)四舍五入
select round(12.678,2) from dual;
--trunc(number,number)截断小数位
select trunc(12.678,2) from dual;
--sign(number)判断正负数
select sign(10) from dual;
--sqrt(number)开平方根
select sqrt(25) from dual;
--mod(number,number)取余
select mod(10,3) from dual;
--power(number,number)求幂
select power(2,3) from dual;
select power(2,10) from dual;

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值