Oracle中单行函数、多行函数

一、单行函数:一次操作一行

       单行函数包括:字符函数 数值函数 日期函数 转换函数 通用函数

  1.字符函数:a. lower(全部字符转成小写)、 upper(全部字符转成大写)、initcap(单词首字母大写)

             例如:select 'HEllo wORld' one, lower('HEllo wORld') two, upper('HEllo wORld') three, initcap('HEllo wORld') from dual;

          

        b. substr(字符串,begin,len) :从begin开始数(第一个字符索引为1),向后截取len个字符数

          例如:select substr('HELLO WORLD',2,5) from dual;  

          

         c. length 字符数 / lengthb 字节数

           一个英文或一个汉字算一个字符数;在utf-8编码格式下,一个汉字算3个字节           

            扩展:如何查看当前系统编码格式:select * from nls_database_parameters;

 

        d. instr(str,substr) : str为字符串,substr为字符串中的某个或多个连续字符,功能是查询str字符串中,substr指定字符串的位置

         例如: select instr('Hello world','ll') from dual;  

          

 

 

        e. lpad  /   rpad  :左填充  /  右填充

         例如 : select lpad('hello',10,'*'), rpad('world',10,'$') from dual;

           

         

          f. trim:去空格,或者去除任意字符

         例如:select trim('     hello world      ') from dual; (去除空格)

            select trim('x' from 'xxxxxhello worldxxxxx') from dual;  (去除x字符)

 

        g. replace:字符串替换

         例如:select replace('hello', 'l', '*') from dual;  

          

 

  2.数学函数

   a. round(数字,位数) :对数字进行四舍五入计算

    例如:select round(66.666,2), round(66.666,1), round(66.666,0), round(66.666,-1), round(66.666,-2) from dual;  

             

 

    b. trunc(数字,位数):舍尾,保留n位小数

      例如:select trunc(66.666,2), trunc(66.666,1), trunc(66.666,0), trunc(66.666,-1), trunc(66.666,-2) from dual;

 

    c. mod(数字,位数):取余(相当于%)

 

  3.日期函数

   a. sysdate:系统当前时间

    b. to_char(日期,格式)   

    c. months_between(日期1,日期2):日期1-日期2得出相差多少月    例如:select ename, hiredate,(sysdate - hiredate)

       d. add_months:加月份    例如:select add_months(sysdate,12) from dual;  --当前时间加上12个月  

   e. last_day:获取当月里面的最后一天      例如:select last_day(sysdate) from dual;

   f. next_day(日期,'星期五'):获取当前时间的下一个星期n是哪一天    例如:select next_day(sysdate,'星期五') from dual;

 

  4.通用函数

    a. nvl  /  nvl2

    b. nullif(a,b) : 若a = b, 则返回null,否则返回a;

    c. coalesce :  从左往右找第一个不为null的

     例如:select comm, sal,coalesce(comm,sal) from emp; 

    

 

 

     d.  条件判断函数

    decode(字段, 条件1,返回值1,条件2,返回2,....,最后表达式)

    例如:select ename,job , sal 涨前,  decode(job, 'PRESIDENT',sal+1000,'MANAGER',sal+500,sal+300) 涨后 from emp;  

    

    case表达式

    例如:select ename ,job ,sal 涨前,case job

       when 'PRESIDENT' then sal+1000

       when 'MANAGER' then sal+500
       else sal + 300 end
       涨后
       from emp ;

 

  5.转换函数

     a. 隐式转换(自动转换)  

    

   b. 显式转换

    

 

 

 

 

 

二、多行函数:一次操作多行

  1.count:可以查询出非空行数

     例如:求emp表有多少行数据:select count(*) from emp;

  2.sum:求出指定列的数值和

     例如:求emp表中所有员工工资的总和:select sum(comm) from emp;

  3.max:求出指定列中的最大值

     例如:求emp表中员工最大工资是多少:select max(comm) from emp;

  4.min:求出指定列中的最小值

     例如:求emp表中员工最小工资是多少:select min(comm) from emp;

  5.avl:求出指定列中的平均值

    例如:求emp表中员工平均工资是多少:select avl(comm) from emp;

 

posted @ 2021-08-06 18:42  Brack_Pearl  阅读(357)  评论(0编辑  收藏  举报