天天看點

Oracle中的單行函數字元串函數:數學函數時間函數 轉換函數通用函數

字元串函數:

Oracle中的單行函數字元串函數:數學函數時間函數 轉換函數通用函數

注意SUBSTR 如果向要從後向前截取,可以使用負數來表示

例如:SUBSTR('helloword',-3),表示截取最後三個字元,不寫長度.預設從開始截取到字元串的末尾.

以上函數除了INITCAP以外都可以在mysql中使用

程式中的字元串,下标從0開始,資料庫中的下标從1開始,Oracle中,如果下标寫0.則按照1處理,在mysql中,不會傳回任何結果

數學函數

Oracle中的單行函數字元串函數:數學函數時間函數 轉換函數通用函數

注意,ROUND,和TRUNC函數都可以是用以下格式ROUND(889.99,-2) 這樣中格式,小數位數可以是負數,當小數位數是負數時,例子中的結果是900

在mysql中沒有TRUNC函數,有功能相同的TRUNCATE函數,用法也和Oracle中的TRUNC函數相同.

時間函數

在日期中有如下三個操作:

  日期+數字=日期(表示若幹天之後的天數)

  日期-數字=日期(表示若幹天前的天數)

  日期-日期=天數(表示兩個日期相差多少天)

但是這種計算的結果不精确,在oracle中不精确,在mysql中結果會是一種錯誤的結果

是以給出以下日期函數

Oracle中的單行函數字元串函數:數學函數時間函數 轉換函數通用函數

使用日期函數進行日期的計算會很精确,但是以上的函數在mysql中隻有LAST_DAY可以使用

 轉換函數

Oracle中的單行函數字元串函數:數學函數時間函數 轉換函數通用函數

以上函數在mysql中不存在,隻有Oracle中有

例如我想要将現在的時間轉換成字元串

SELECT TO_CHAR(SYSDATE,'yyyy-mm-dd') FROM dual;

Oracle中的單行函數字元串函數:數學函數時間函數 轉換函數通用函數

我們也可以從日期中擷取年.月,日

SELECT TO_CHAR(SYSDATE,'yyyy') from dual;

Oracle中的單行函數字元串函數:數學函數時間函數 轉換函數通用函數

 還可以用來格式化數字

SELECT TO_CHAR(5635192189372198731,'999,999,999,999,999,999,999,999,999') FROM dual;

Oracle中的單行函數字元串函數:數學函數時間函數 轉換函數通用函數

數字9.是任意數字的标記,在格式化數字或者貨币的時候,定義的格式的字元串中,标記的位數必須大于需要轉換的資料的位數

貨币的轉換

Oracle中的單行函數字元串函數:數學函數時間函數 轉換函數通用函數

本地貨币的标記是L,任意數字的标記是9

通用函數

Oracle中的單行函數字元串函數:數學函數時間函數 轉換函數通用函數

NAL函數

如果我們要查詢員工表中,員工的編号,員工的姓名,員工的年薪(  年薪=(月薪+績效)*12  )

但是有些員工沒有績效,這樣的話,最後傳回的結果,沒有績效的員工就沒有年薪

指令:select empno,ename,(sal+comm)*12 INCOME from emp;

Oracle中的單行函數字元串函數:數學函數時間函數 轉換函數通用函數

這時候我們就可以使用NVL函數

指令select empno,ename,(sal+NVL(comm,0))*12 INCOME from emp;

Oracle中的單行函數字元串函數:數學函數時間函數 轉換函數通用函數

DECODE函數,這個函數比較重要,面試的時候可能會被問到

完整的員工資訊如下:

Oracle中的單行函數字元串函數:數學函數時間函數 轉換函數通用函數

如果我們想要查詢員工編号,員工姓名,員工的job,但是員工的job名稱卻是英文,我們看着不太好看,想要将其顯示為中文

指令: Select empno,ename,job,DECODE(job,'CLERK','辦事人員','SALESMAN','銷售人員','MANAGER','經理','--') 職位 From emp ;

Oracle中的單行函數字元串函數:數學函數時間函數 轉換函數通用函數