关于oracle的一些函数(数字、字符、转换、空值)

一、数字函数
  --1.返回x的绝对值abs(x)
    select abs(-2) from dual;
  --2.返回大于等于x的最小整数值ceil(x)
  --3.返回小于等于x的最小整数值floor(x)
  --4.返回x的y次幂power(x,y)
  --5.返回x除以y的余数mod(x,y)
  --6.返回x四舍五入后的值round(x[,y]),y为保留的小数位,不写的话默认保存整数
    select round(3.36,1) from dual;
  --7.返回x的平方根sqrt(x)
  --8.trunc(x[,y]):返回x按精度y截取后的值,y可写可不写。
    --y为正,表示保留的小数位数;y为负,小数点左边y位变成0;y为0或不写取整。
    select trunc(88345.937233, -5) from dual;

二、字符函数
  --1.将数字转换成字符chr(x)
  --2.将字符转换成数字ascii(x)
  --3.连接字符串concat(x,y)。oracle中的concat函数只能指定两个字符串的连接,mysql中无限制
    select concat(concat('%','aaa'),'%') from dual;
  --4.删除左边空格ltrim(x)
  --5.删除右边空格rtrim(x)
  --6.删除两边空格trim(x)
  --7.转换成大写upper(x)
  --8.转换成小写lower(x)
  --9.替换replace(str,search_str[,replace_str])
    --将str字符串中的search_str子字符串替换成replace_str,replace_str可写可不写
    select replace('abcdefghijk','def','kkkk') from dual; --abckkkkghijk
  --10.替换translate,和replace相同,但比replace强大。多个同样的值只有写一次
    select translate('abcdefghidk','def','#@') from dual;   --abc#@ghi#k
    --(d将被#替代,e将被@替代,f对应的值是空值,将被移走)
    --如果替换的字符长度大于被替换的字符,多余部分被忽略
  --11.rpad(str1,x[,str2]):填充/截取到x个长度,不足的话右边用指定字符填充
    select rpad('abcde',10,'wqe') from dual; --abcdewqewq
  --12.lpad(str1,x[,str2])填充/截取到x个长度,不足的话左边用指定字符填充
    select lpad('abcde',10,'wqe') from dual; --wqewqabcde
  --13.substr(str,x[,y]):截取从x的位置开始长度为y的子字符串
    select substr('abcdefgh',3,6) from dual;
  --14.求字符串的长度length(str)

三、转换函数
  --decode(),将查询结果翻译成其他值(即以其他形式表现出来)
    --decode(条件,值1,翻译值1,值2,翻译值2,...值n,翻译值n,缺省值)
    select decode(4-2,1,'a',2,'b') from dual;

四、空值函数
  --1.nvl(x1,x2)
    --x1为null,返回x2; 不为null,返回x1。注意两者的类型要一致
    select nvl(0,11) from dual;
  --2.nvl2(x1,x2,x3)
    --x1不为null,返回x2; 为null,返回x3。x2和x3类型不同的话,x3会转换为x2的类型
    select nvl2(null,33,22) from dual;
  --3.nullif(x1,x2)
    --x1和x2相等返回null,不等则返回x1
    select nullif(45,45) from dual;

posted on 2019-03-24 11:22  Demonzql  阅读(4420)  评论(0编辑  收藏  举报

导航