Oracle单值函数

单值函数:

可以操作数据项,

接收参数,返回值
修改数据类型
嵌套
语法

  • 字符类型:

      lower:字符转换成小写。
      	select lower(last_name)
      	from s_emp;
      upper:字符转成大写。
      	select upper(last_name)
      	from s_emp;
      initcap:首字母大写。
      	select initcap(lower(last_name))
      	from s_emp;
      concat:拼接字符串。【最多两个参数,多参数须嵌套】
      	select concat(first_name,last_name)
      	from s_emp;
      	select concat(concat(first_name,'.'),last_name)
      	from s_emp;
      substr:截取字符串。【正数从前往后,负数从后往前】
      	select last_name,substr(last_name,3) string
      	from s_emp;
      	参数:【字符串,开始位置,截取长度】
      	select last_name,substr(last_name,3,2) string
      	from s_emp;
      length:返回字符串的长度。
      		select last_name,length(last_name) length
      		from s_emp
      		order by 2;
      nvl:替换空值
      	select last_name,nvl(commission_pct,0)
      		from s_emp;
      dual:哑表,sys用户下的,默认已授权,其他用户可以直接使用,一般用于构成完整的select查询语法;
    
  • 数字类型:

      round:四舍五入【负数小数点前,正数小数点后】
      	round(数值,保留位数)
      	select round(45.923,2) from dual;
      trunc:直接截取
      	select trunc(45.923,2) from dual;
      mod:取余数
      	select mod(10,3) from dual;
    
  • 日期类型:

      默认日期格式: DD-mon-yy   '06-9月-19' '06-sep-19'月份前三个字母缩写,由系统环境决定中英文
      
      sysdate:系统当前时间【默认日期格式,包含时分秒;可以加减运算,单位是天】
      	select sysdate from dual;
      	
      months_between:两个日期之间相差多少个月
      	select months_between(sysdate+100,sysdate) from dual; 
      add_months:将日期时间点,按月往后推(正数往后推,负数往前推)
      	select add_months(sysdate,2) from dual;玩后推
      	select add_months(sysdate,-2) from dual;玩前推
      next_day:返回一个日期数据:表示一个时间点后的下一个星期几在哪一天
      	select next_day(sysdate,'星期五')
      	from dual;
      	注意:如果要使用'FRIDAY',那么需要把当前会话的语言环境修改为英文
      last_day:返回一个日期数据:表示一个日期所在月份的最后一天
      	select last_day(sysdate)
      	from dual;
      round:对日期进四舍五入,返回操作后的日期数据
      	例如:
      	把当前日期四舍五入到月
      		select round(sysdate,'MONTH')
      		from dual;
      		select round(sysdate,'DAY')
      		from dual;
      	测试:15号16号分别是舍弃还是进位
      		select round(sysdate-8,'MONTH')
      		from dual;
      		15舍16进
      	把当前日期四舍五入到年
      		select round(sysdate,'YEAR')
      		from dual;
      
      		//这个写法是错误的
      		//数字函数也有一个round
      		//俩个ronnd函数有冲突
      		//所以这里不能使用默认的日期格式
      		select round('01-2月-2019','MONTH')
      		from dual;
    
      trunc:对日期进行截取 和round类似,但是只舍弃不进位
      	select trunc(sysdate,'year') from dual;
    
  • 转换类型:

    to_char:转字符

      	to_char(日期,格式)
      		select to_char(sysdate,'yyyy')
      		from dual;
      		
      		 日期格式:
      			yyyy:四位数的年份
      			rrrr:四位数的年份
      			yy:两位数的年份
      			rr:两位数的年份
      			mm:两位数的月份(数字)
      			D:一周的星期几
      			DD:一月的第几天
      			DDD :一年的第几天
      			YEAR:英文的年份
      			MONTH:英文全称的月份
      			mon:英文简写的月份
      			ddsp:英文的第几天(一个月的)
      			ddspth:英文序列数的第几天(一个月的)
      			DAY:全英文的星期
      			DY:简写的英文星期
      			hh:小时
      			mi:分钟
      			ss:秒
      			
      			
      	例如:
      		测试常见的一些日期数据转换为字符串的格式
      			select to_char(sysdate,'yyyy MM D DD DDD YEAR MONTH ddsp ddspth DAY DY') from dual;
    
      			select to_char(sysdate,'dd-mm-yy')
      			from dual;
    
      			select to_char(sysdate,'yy-mm-dd')
      			from dual;
    
      			select to_char(sysdate,'dd-mm-yy HH24:MI:SS AM')
      			from dual;
    
    
      to_char(数字,格式)
      例如:
      	select to_char(salary,'$999,999.00') 
      	from s_emp;
    
      fm表示去除结果显示中的开始的空格
      	select to_char(salary,'fm$999,999.00') 
      	from s_emp;
    
      L表示系统本地的货币符号
      	select to_char(salary,'fmL999,999.00') 
      	from s_emp;
    

    to_number:转数字

      to_number(数字型字符)
      例如:
      	select to_number('1000') 
      	from dual;
    
      //这个写法是错的 abc不能转换为数字
      	select to_number('abc')
      	from dual;
    

    to_date:转日期

      to_date(日期型字符,格式)
      例如:
      	select to_date('10-12-2019','dd-mm-yyyy')
      	from dual;
    
      	select to_date('25-5月-95','dd-month-yy')
      	from dual;
    
      	select to_date('95/5月/25','yy/month/dd')
      	from dual;
    
      //session语言环境设置为英文下面可以运行
      	select to_date('25-MAY-95','dd-MONTH-yy')
      	from dual;
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值