oracle之函数使用大全

1.单行函数

   1.1 字符函数

         .字符大小写转换

          lower():字母转换为小写

     select lower('TEST') from dual;--结果test
         upper():字母转换为大写      
     select upper('test') from dual;--结果TEST
         initcap():首字母转换为大写,如果为空格分开,每个单词首字母转换为大写
    select initcap('test') from dual;--结果Test
    select initcap('test mine') from dual;--结果Test Mine

        . 字符处理

        concat():连接两个字符串,只接受两个字符串参数      

    select substr('1234567',2,3) from dual;--结果234,从第二个位置,截取3个字符

        substr():字符串截取

    select substr('1234567',2,3) from dual;--结果234,从第二个位置,截取3个字符

        length():返回字符串的长度

    select length('minetest') from dual;--结果8
    select length('mine test') from dual;--结果9,空格也算在长度之内

        instr():定位子字符串在整个字符串中的位置

    select instr('minetest','e') from dual;--结果4,从1开始,找到第一个子符出现的下标

        lpad():左侧填充

    select lpad('one',10,'*') from dual;--结果*******one,字符串为10个长度,不足的左边补*号填充

        lpad():右侧填充

    select rpad('one',10,'*') from dual;--结果one*******,字符串为10个长度,不足的右边补*号填充

        trim():过滤掉字符串首位空格符

    select trim('  **  ') from dual;--结果**(两边的空格已经去掉,可以用length()求长度比较)

        replace():替换字符串

    select replace('mine','m','****') from dual;--结果****ine,把mine中的m用****替换掉

  1.2 数值函数

        abs():取绝对值    

    select abs(-1) from dual;--结果1

        round():四舍五入取值

    select round(1.235) from dual;--结果1
    select round(1.535) from dual;--结果2
    select round(1.535,2) from dual;--结果1.54
    select round(1.53534,4) from dual;--结果1.5353

        trunc():截断,不四舍五入

    select trunc(1.96) from dual;--结果1(直接取整,把小数点部分干掉)

        ceil():向上取整

    select ceil(9.1) from dual;--结果10
    select ceil(9.9) from dual;--结果10

        floor():向下取整

    select floor(9.1) from dual;--结果9
    select floor(9.9) from dual;--结果9

        sign():判断数值正负,-1为负数,1为正数

    select sign(-100) from dual;--结果-1为负数
    select sign(100) from dual;--结果1为正数

        power():幂运算

    select power(2,3) from dual;--结果8,2的3次方

        sqrt():开平方根

    select sqrt(4) from dual;--结果2,4开平方根

        mod():取模

    select mod(10,3) from dual;--结果1,10对3求余数

        exp():基数为e的幂运算   

    select exp(1) from dual;--结果2.71828182845905

        log():对数运算

    select exp(1) from dual;--结果2.71828182845905

        ln():自然对数运算

    select ln(2) from dual;--结果0.693147180559945

   1.3 日期函数

       add_months(x,y),当前日期x上加上y月

    select add_months(sysdate,1) from dual;
       last_day(x),返回日期x当前月最后一天是几号

   select last_day(sysdate) from dual;

       months_between(x,y),返回x,y两个日期相差的月份,x-y

   select months_between(sysdate,add_months(sysdate,1)) from dual;
   select months_between(add_months(sysdate,1),sysdate) from dual;

       round(x, y),将x四舍五入到y指定的单位

   select round(sysdate,'month') from dual;

       trunc(x,y),将x按y的单位截取

   select trunc(sysdate,'month') from dual;

       next_day(x,y),计算指定日期x后第y个星期几对应的日期

   select next_day(sysdate,'星期一') from dual;--结果为当前日期下周一是的号数

   1.4 转换函数

       to_number(),字符串--》数值

   select to_number('123') from dual;

       to_date(),字符串--》日期

   select to_date('20160220','yyyy-MM-dd') from dual;--2016/2/20

       to_char(),日期--》字符串

   select to_char(sysdate,'yyyy-MM-dd') from dual;

   1.5 通用函数(对数据类型使用没有限制)

      nvl(x,y),如果x为null,结果为y,如果x不为null,结果为x

   select nvl(1,2) from dual;--结果1
   select nvl(null,2) from dual;--结果2

      nvl2(x,y,z),如果x为null,结果为z,如果x不为null,结果为y

   select nvl2(null,1,2) from dual;--结果2
   select nvl2(0,1,2) from dual;--结果1

      nullif(x,y),如果x与y相等结果为null,x与y不相等结果为x

   select nullif(1,2) from dual;--结果为1
   select nullif(1,1) from dual;--结果为null

      case  ,就跟if...else if...else if....(多个else if)else...含义一样

   select case when 1=1 then 'true' else 'false' end  from dual;
   --含义if 1=1 那么就是true,else 为false。注意end 作为收尾

   select case when 1=2 then 'false' 
            when 1=3 then 'false'
            when 1=4 then 'false'
       else 'true' end  from dual;--此处仅用于说明可以跟多个when

      decode()

   select decode(
         1,1,'true',
           2,'false',
           'false'
   ) from dual;--if 1==1 true,else if 1==2 false,else false 

2.多行函数

   2.1 分组函数

   avg(),求平均值

   count(),计算数量

   sum(),求和

   max(),求最大值

   min(),求最小值

 create table mytest(
    id number(11) primary key,
    name varchar2(10),
    age number(3)
  )

  insert into mytest values(1,'one',18);
  insert into mytest values(2,'two',20);
  insert into mytest values(3,'three',22);

  commit;
  select avg(age),max(age),min(age),sum(age),count(id) from mytest;

结果如下:


总结:函数之间可以根据使用实际需要进行合适的组合,达到目标

你可能感兴趣的:(字符函数,日期函数,分组函数,数值函数)