Oracle数据库 单值函数

函数分为:
      一.单值函数
            1.字符函数
            2.数字函数
            3.日期函数
            4.转换函数
      二.分组函数(后面的章节再做学习)

      dual  //哑表
      dual是一个虚拟表,用来构成select的语法规则,oracle保证dual里面永远只有一条记录。
     
1)字符函数
      LOWER    Converts to lowercase
      UPPER    Converts to uppercase
      INITCAP    Converts to initial capitalization
      CONCAT    Concatenates values
      SUBSTR    Returns substring
      LENGTH    Returns number of characters
      NVL        Converts a null value
    
    •   lower 把字符转为小写
              例如:把'HELLO'转换为小写
              select lower('HELLO')
              from dual;
            
    • upper 把字符转换为大写
              例如:把'world'转换为大写
              select upper('world')
              from dual;

    • initcap 把字符串首字母转换为大写
              例如:把'hELLO'转换为首字母大写,其余字母小写
              select initcap('hELLO')
              from dual;
            
    • concat 把俩个字符串连接在一起(类似之前的||的作用)
              例如:把'hello'和'world'俩个字符串连接到一起,并且起个别名为msg
              select concat('hello','world') msg
                       from dual;
    
    •  substr 截取字符串
              例如:截取'hello'字符串,从第2个字符开始(包含第二个字符),截取后面连续的3个字符
              select substr('hello',2,3)
              from dual;
    
    
    •  length 获得字符串长度
              例如:获得'world'字符串的长度
              select length('world')
              from dual;
    
    •  nvl 替换列中为null的值
              select last_name,nvl(commission_pct,0)
              from s_emp;
    
2)数字函数
        ROUND    Rounds value to specified decimal
        TRUNC    Truncates value to specified decimal
        MOD        Returns remainder of division   
    
    •     round 四舍五入
              round(arg1,arg2)
              第一个参数表示要进行四舍五入操作的数字
              第二个参数表示保留到哪一位
    
              例如:
              保留到小数点后面2位
              select round(45.923,2)
              from dual;
            
    •       trunc 截取到某一位 
              trunc(arg1,arg2)
              和round的用法一样,但是trunc只舍去不进位
    
              例如:
              截取到小数点后面2位
              select trunc(45.929,2)
              from dual;
            
            
    •         mod 取余
             mod(arg1,arg2)    
             第一个参数表示要进行取余操作的数字
             第二个参数表示参数1和谁取余
                  
            例如:
                把10和3进行取余 (10除以3然后获取余数)
                select mod(10,3)
                from dual;
                
3)日期函数
          MONTHS_BETWEEN    Number of months between two dates
          ADD_MONTHS              Add calendar months to date
          NEXT_DAY                    Next day of the date specified
          LAST_DAY                     Last day of the month
          ROUND                          Round to date at midnight
          TRUNC                           Remove time portion  from date
        
      sysdate关键字
            表示系统的当前时间    
            例如:
            显示时间:当前时间
            select sysdate from dual;
            注意:sysdate进行加减操作的时候,单位是天
            例如:
                    显示时间:明天的这个时候
                    select sysdate+1 from dual;
                    
    • months_between 俩个日期之间相差多少个月(单位是月)
            例如:
            30天之后和现在相差多少个月
            select months_between(sysdate+30,sysdate)
            from dual;
    
    
    • add_months  返回一个日期数据:表示一个时间点,往后推x月的日期
            例如:
            '01-2月-2016'往后推2个月
            select add_months('01-2月-2016',2)
            from dual;    
            注意:这个数字也可以是负数,表示往前推x月
    
    • next_day 返回一个日期数据:表示一个时间点后的下一个星期几在哪一天
            例如:
            离当前时间最近的下一个星期5是哪一个天
            select next_day(sysdate,'星期五')
            from dual;
            注意:
            如果要使用'FRIDAY',那么需要把当前会话的语言环境修改为英文
    
    
    • last_day 返回一个日期数据:表示一个日期所在月份的最后一天
            例如:
            当前日期所在月份的最后一天(月底)
            select last_day(sysdate)
            from dual;
    
    
    • round  对日期进四舍五入,返回操作后的日期数据
            例如:
            把当前日期四舍五入到月
            select round(sysdate,'MONTH')
            from dual;
            测试:15号16号分别是舍弃还是进位
            (15号是舍弃,16号是进位)
            //这个写法是错误的
            //数字函数也有一个round
            //俩个ronnd函数有冲突
            //所以这里不能使用默认的日期格式
            select round('01-2月-2016','MONTH')
            from dual;
    
    •  trunc  对日期进行截取 和round类似,但是只舍弃不进位

4)类型转换函数
    TO_CHAR      converts a number or date string to a character string.
    TO_NUMBER converts a character string containing digits to a number.
    TO_DATE       converts a character string of a date to a date value. 
    
    
    •  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:秒
            
    •     to_number 把字符转换为数字
            例如:
            select to_number('1000') 
            from dual;
            
            //这个写法是错的 abc不能转换为数字
            select to_number('abc')
            from dual;
    •      to_date 把字符转换为日期
            例如:
            select to_date('10-12-2016','dd-mm-yyyy')
            from dual;

    oracle数据库中表示一个日期数据的几种方式
      1.使用sysdate
      2.使用oracle默认的日期格式 例如:'25-MAY-95'
      3.使用日期函数ADD_MONTHS/NEXT_DAY/LAST_DAY/ROUND/TRUNC
      4.使用转换函数to_date


    函数之间的嵌套
      格式:F3(F2(F1(arg0,arg1),arg2),arg3)
      例如:
      先把'hello'和'world'连接起来,再转换为字母大写然后再从第4个字符开始,连着截取4个字符
      select substr(upper(concat('hello','world')),4,4)
      from dual;
 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值