mysql学习笔记(四)

  • 转换函数:
    分为隐式转换和显示转换两种。
    隐式转换用于字符和数值互转,字符和日期互转
      varchar2 or char --> number,  varchar2 or char --> date
      number --> varchar2,          date-->varchar2
    select * from emp where empno = to_number('8000');
    select * from emp where hiredate = '20-2月-1981'
    尽管数据类型之间可以进行隐式转换,但仍建议使用显示转换,以保持良好的设计风格
    select '999'-10 from dual;//989
    
  • to_char(date,'fmt')
      格式元素      含义  
      YYYY,YY      代表四位,两位数字的年份
      MM           用数组表示的月份
      MON          月份的缩写,对中文月份表全称
    
    用于将日期或时间戳转换成varchar2类型字符串,如果指定了格式字符串,则用它控制结果的结果。
    格式字符串由格式元素构成。格式控制穿必须用单引号括起来。
    select to_char(sysdate,'YYYY-MM-DD HH24:MI:SS') from dual;
    
  • to_char函数操作数字:to_char(num,format)
    * 用于将number类型参数转换为varchar2类型,指定format控制转换。
      控制符       含义
        9          代表一位数字,如果该位没有数组则不显示,小数位强制显示
        0          代表一位数字,如果该位没有数字则强制显示
        $          显示美元符号
        L          显示本地货币符号
        .          显示小数点
        ,          显示千分位符号
     to_char(123.456789,'9999')   //空格123;前面补齐空格,如果'999',结果为123
     to_char(123.456789,'0000.00') //0123.46;前面补齐0,小数点后两个0表示截取两位小数,四舍五入。
     to_char(123.456789,'$0000.00') //$0123.46
     to_char(123.456789,'L0000.00') //¥0123.46
     to_char(123.456789,'999,999,999') //123,456,789
    
  • 显示转换:
    to_char():当由数值或日期转成字符串时,必须要规定格式。
  • to_number(string format):转成数字
     将char或varchar2类型的string转换为number类型。
     select to_number('$39343.783','$99990.000') from dual;       $39343.783
     select to_number('11.231','999.999') from dual; //  空格11.231
    
  • to_date(string format):转成日期
     将char或varchar2类型的string转换为date类型。
     select to_date('04,05,19,10,23,44','yy,mm,dd,hh12,mi,ss');
     select to_date('2022-05-28','yyyy-mm-dd') from dual; 
    
  • 单行函数嵌套:
    单行函数可被嵌入任何曾。
    嵌套函数从最深层到最低层求值。
    --显示没有上级管理的公司首脑
      select ename,nvl(to_char(mgr),'boss') from emp where mgr is null;
    --显示员工雇佣期满6个月后下一个星期五的日期
      select hiredate,next_day(add_months(hiredate,6),'星期五') from emp;
    
  • 其他函数:decode ,case when(条件函数)
    --给不同部门的人员涨薪,部门编号为10,涨薪10%,部门编号20,涨薪20%,部门编号30,涨薪30%
      decode实现:
        select ename,sal,deptno,decode(deptno,10,sal*1.1,20,sal*1.2,30,sal*1.3) from emp;
      case when实现:
        select ename,sal,deptno,case deptno when 10 then sal*1.1 when 20 then sal*1.2 when 30 then sal*1.3 end from emp;
    

posted on 2022-05-28 16:08  张少凯  阅读(41)  评论(0编辑  收藏  举报

导航