1. 程式人生 > >關於oracle的一些函數(數字、字符、轉換、空值)

關於oracle的一些函數(數字、字符、轉換、空值)

subst abcde 等於 截取 ceil 求字符串的長度 abs lac 多個

一、數字函數
  --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;

關於oracle的一些函數(數字、字符、轉換、空值)