Oracle函数之单值函数

Oracle中单值函数有四种:字符函数数字函数日期函数转换函数

字符函数Oracle中对字符类型的数据进行处理的函数

lower:将字符类型的数据全部转为小写

例如:select lower(name) from test
      查找出test表中的name字段 并且将它全部变为小写


upper:将字符类型的数据全部转为大写
例如:select upper(name) from test
      查找出test表中的name字段 并且将它全部变为大写

initcap:将字符串中首字母变为大写

例如:select  initcap('hello') from dual
结果:Hello
dual是哑表,是一个虚拟表,用来构成select的语法规则,oracle保证dual里面永远只有一条记录,任何用户都可以操作,当你不需要从具体表中取数据时,例如计算1+2的值,就可以用到dual表

concat:连接字符串

例如:  select concat('hello','world') from dual;
结果:helloworld

substr:获取字符串的字串

格式:substr(字符串,截取开始位置,截取长度)
例如:select substr('helloworld',2,4) from dual;
结果:ello


length:获取字符串长度

例如:select length('hello') from dual;
结果是:5

nvl函数:nvl(arg,value)如果arg为空,就用value值来表示arg的值
例如:select last_name,nvl(salary,0) from test;
结果:jack  0


replace函数 将字符串中的字符替换为指定字符

例如:select replace (name,‘aa’,‘bb’) from test
解释:查询test表中的名字,并且将名字中含有aa字符串的全部改为bb

instr函数:找出字串在父串中的位置,0表示在父串中没有改字串 开始位置从1开始
例如:select instr('Hello World','World')from dual;
结果:7

trim函数:截断字符串

截断连续的前置a
例如:select trim(leading 'a' from 'aaaaabbbbbbssdfsfs')from dual
结果;bbbbbbssdfsfs
截断连续的后置a
例如:select trim(trailing 'a' from 'assahaaaaa')from dual
结果:assah
截断连续的前置a和后置a(默认是这种方式)
例如:select trim(trailing 'a' from 'assahaaaaa')from dual
结果:ssah


lpad函数:左铺垫 
格式:lpad(需要铺垫的字符串,最终返回的字符串长度,用于填充的字符)
   如果最终要返回的长度小于字符串本身长度 那就从左到右截取该字符串 最终长度为第二个参数
   用于填充的字符可以为空
例如:select lapd('liujd',10,'6') from dual
结果:66666liujd
例如:select lpad ('liujd',3,'6') from dual
结果:liu


rpad函数:右铺垫
用法和lpad一样
例如:select rapd('liujd',10,'6') from dual
结果:liujd66666
例如:select rpad ('liujd',3,'6') from dual
结果:liu

数字函数:Oracle对数字类型数据的处理函数

abs(n) :返回n的绝对值

例如:select abs(-1),abs(1) from dual; 
结果:1 1


ceil(n)返回大于等于n的最小整数

例如:select ceil(10),ceil(10.5),ceil(-10.5) from dual;
结果:10  11  -10


floor(n) 返回小于等于n的最大整数
例如:select floor(10),floor(10.5),floor(-10.5) from dual;
结果:10  10 -11


round:四舍五入
例如:select round(35.36,1) from dual
结果:35.4
第二个参数表示小数取几位,就是四舍五入到哪一位
例如:select round(35.36,0) from dual
结果是:35
例如:select round(35.36,-1) from dual
结果是:40


trunc:截取
格式:trunc(number,decimals)
number是待处理的数值
decimals表示需要保留小数点后面的位数
例如:select trunc(35.36,1)from dual;
结果:35.3

mod:取余数
例如: select mod(10,3) from dual;
结果:1

日期函数:Oracle中对日期格式的数据的处理


months_between:计算两个日期之间的差距

例如:select months_between('01-MAR-99','01-JAN-99') from dual;
结果:2
注意:此时应该将当前的数据库会话改为英文环境
语法:
alter session set nls_date_language=english;


add_months:当前月份进行加运算
例如:select add_months('01_MAR-99',12) from dual;
结果:01-MAR-00

next_day:从当前时间计算,下一个指定的星期是具体的哪一天

例如:select next_day(sysdate,'FRIDAY') from dual;
假设我现在是7月20号 下一个周五应该是明天 所以结果是7月21号


last_day:当前日期所在月份的最后一天是哪一个具体的日期
例如:select last_day(sysdate) from dual;
我当前是7月20号,本月最后一天是7月31号


to_date(dateString,dateFormat)
dateString表示字符串类型的日期
dateFormat表示要转成的指定格式
例如:select to_date(‘2017-07-20 12.12.12’,'yyyy-mm-dd hh24:mi:ss') from dual
结果:2017-07-20 12.12.12


round(number[,decimals]) 返回四舍五入后的值 
number 待做截取处理的数值
decimals 指明需保留小数点后面的位数。可选项,忽略它则截去所有的小数部分,并四舍五入。如果为负数则表示从小数点开始左边的位数,相应整数数字用0填充,小数被去掉。decimals 如果是小数都只取整数部分
例如:select round(5555.6666,2.1),round(5555.6666,-2.6),round(5555.6666) from dual; 
结果: 5555.67 , 5600 , 5556 


trunc(number[,decimals]) 返回number按精度decimals截取后的值 
number 待做截取处理的数值
decimals 指明需要保留小数点后的位数,可选项 默认为0 为负数时表示从右往左截取 为整数时反之
例如:select trunc(5555.66666,2.1),trunc(5555.66666,-2.6),trunc(5555.033333) from dual; 
结果:5555.66 5500 5555 


round函数和trunc函数的区别
round(x[,y]) 返回截取后的值,用法同trunc(x[,y]),只是要做四舍五入
trunc(x[,y]) 返回截取后的值,用法同round(x[,y]),只是不四舍五入 

转换函数 :Oracle中用于字符串和日期 数字之间的转换
to_char:用来将一个日期转换成字符串
例如:select to_char(sysdate,'YYYY-MM-DD')  from dual;
结果:2016-01-11
例如:select to_char(sysdate,'YYYY-MM-DD HH24:MI:SS AM')  from dual;
结果:2016-01-11 10:31:56 AM

to_number:用来将一个数字字符串转换成数字。
例如:select to_number('2016') from dual;
结果: 2016

to_date:用来将一个字符串装换成日期。
例如:select to_date('17-02-1991','dd-mm-yy')   from dual;
结果:17-FEB-91

Oracle中的 sysdate表示系统当前时间
查看当前系统时间
select sysdate from dual
可以用sysdate的加减运算来获取日期 sysdate加减获取的是天数
Oracle中的默认时间格式是 '01-FEB-01"
(本文只列举了部分常用的函数。。。。。。)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值