Oracle------第三章Single Row Functions

Oracle------第三章Single Row Functions

第三章:单值函数

  • 哑表:dual,满足select子句的结构
    处理函数的返回值

      select...
      from dual;
    
  • 单值函数在字符串上的使用
    lower:将字符串转化为小写

      select lower('HELLO World')
      from dual;
    

    upper:将字符串转化为大写

      select upper('HELLO World')
      from dual;
    

    initcap:每个单词的首字母大写,其他字母小写

      select initcap('hello world')
      from dual;
    

    concat:字符串的连接

      select concat('Hello',' gril')
      from dual;
    

    substr:求子串

      select substr('hello world',3,6)
      from dual;
      
      第一个参数:字符串,母串
      第二个参数:子串开始的索引(索引从1开始的)
      第三个参数:子串的长度
    

    length:求字符串的长度

      select length('hello world')
      from dual;
    

    练习:查询所有员工的全名(使用first_name,last_name分割),全名以大写的方式显示,并且要求first_name的长度为6,按照全名进行降序排序?

      select upper(concat(concat(first_name,','),last_name)) name
      from s_emp
      where length(first_name)=6
      order by 1 DESC;
      或
      select upper(concat(first_name,last_name)) name
      from s_emp
      where length(first_name)=6
      order by 1 DESC;
    
  • 单值函数在数字类型上的使用
    round:四舍五入

      select round(45.67) from dual;   
      select round(45.67,1) from dual; 
      select round(45.67,2) from dual;
      select round(45.67,0) from dual;  
      select round(45.67,-1) from dual; 
      select round(45.67,-2) from dual; 
      select round(55.67,-2) from dual;  
    

    trunc:只舍不取

      select trunc(45.67) from dual;   
      select trunc(45.67,1) from dual;  
      select trunc(45.67,2) from dual;  
      select trunc(45.67,0) from dual;  
      select trunc(45.67,-1) from dual;
      select trunc(45.67,-2) from dual; 
      select trunc(55.67,-2) from dual; 
    

    mod:取余

      select mod(1500,400) from dual;
    
  • 单值函数在日期类型上的使用

      select sysdate 
      from dual;
    

    设置日期显示格式:

      alter session set nls_date_language=english;
      
      select sysdate from dual;
    

    MONTHS_BETWEEN:两个日期相差的月数

      select months_between(sysdate,'18-MAY-18')
      from dual;
    
      select months_between('18-MAY-13',sysdate)
      from dual;
    

    该函数精确到毫秒级别的。
    ADD_MONTHS:一个日期加上一个月数之后的日期

      select add_months(sysdate,4)
      from dual;
    

    NEXT_DAY:即将来临的星期几的日期

      select next_day(sysdate,'friday')
      from dual;
      
      select next_day(sysdate,6)
      from dual;
    

    LAST_DAY:一个月的最后一天

      select last_day(sysdate)
      from dual;
      
      select last_day('10-MAY-13')
      from dual;
    

    ROUND:四舍五入

      select round(to_date('19-MAY-13'),'MONTH')
      from dual;
    

    练习:测试对于MONTH的临界时
    15舍16入
    测试对于YEAR的临界时
    6舍7入
    TRUNC:只舍不取

  • 转换函数

  1. to_char():将数字类型或者日期类型转换为字符串类型
    1、 将日期类型转换为字符串类型
    YYYY:年
    MM:月
    d:一周第几天
    dd:一月第几天
    ddd:一年第几天
    year:
    month:
    day:
    ddsp:日全拼 几天
    ddspth: 第几天
    hh:小时
    mi:分
    ss:秒

    select to_char(sysdate,'YYYY')
    from dual;
    select to_char(sysdate,'mm')
    from dual;
    select to_char(sysdate,'d')
    from dual;
    select to_char(sysdate,'dd')
    from dual;
    select to_char(sysdate,'ddd')
    from dual;
    select to_char(sysdate,'DAY day')
    from dual;
    select to_char(sysdate,'ddsp')
    from dual;
    

    练习:显示这种格式:2013-08-19 16:16:30 pm

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

    2、将数字类型转换为字符串类型

    select to_char(salary,'fmL000.00')
    from s_emp;
    

    9:位数不满足定义的位数时,不需要强制补齐
    0:位数不满足定义的位数时,需要强制补齐
    $:西方的货币符号
    L:本地的货币符号
    ,:分割
    .:小数点
    fm:去掉前面空格
    注意:定义的位数小于实际的长度会显示#

  2. to_number():将字符串类型转换为数字类型

      select to_number('5') from dual;
    
  3. to_date():将字符串类型转换为日期类型
    1、如果日期是默认格式

     select to_date('19-AUG-13')
     from dual;
    

    2、如果日期不是默认格式,就需要对格式进行说明。

      select to_date('2013/08/19', 'yyyy/MM/DD')
      from dual;
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值