字符串函數:
注意SUBSTR 如果向要從后向前截取,可以使用負數來表示
例如:SUBSTR('helloword',-3),表示截取最后三個字符,不寫長度.默認從開始截取到字符串的末尾.
以上函數除了INITCAP以外都可以在mysql中使用
程序中的字符串,下標從0開始,數據庫中的下標從1開始,Oracle中,如果下標寫0.則按照1處理,在mysql中,不會返回任何結果
數學函數
注意,ROUND,和TRUNC函數都可以是用以下格式ROUND(889.99,-2) 這樣中格式,小數位數可以是負數,當小數位數是負數時,例子中的結果是900
在mysql中沒有TRUNC函數,有功能相同的TRUNCATE函數,用法也和Oracle中的TRUNC函數相同.
時間函數
在日期中有如下三個操作:
日期+數字=日期(表示若干天之后的天數)
日期-數字=日期(表示若干天前的天數)
日期-日期=天數(表示兩個日期相差多少天)
但是這種計算的結果不精確,在oracle中不精確,在mysql中結果會是一種錯誤的結果
所以給出以下日期函數
使用日期函數進行日期的計算會很精確,但是以上的函數在mysql中只有LAST_DAY可以使用
轉換函數
以上函數在mysql中不存在,只有Oracle中有
例如我想要將現在的時間轉換成字符串
SELECT TO_CHAR(SYSDATE,'yyyy-mm-dd') FROM dual;
我們也可以從日期中獲取年.月,日
SELECT TO_CHAR(SYSDATE,'yyyy') from dual;
還可以用來格式化數字
SELECT TO_CHAR(5635192189372198731,'999,999,999,999,999,999,999,999,999') FROM dual;
數字9.是任意數字的標記,在格式化數字或者貨幣的時候,定義的格式的字符串中,標記的位數必須大於需要轉換的數據的位數
貨幣的轉換
本地貨幣的標記是L,任意數字的標記是9
通用函數
NAL函數
如果我們要查詢員工表中,員工的編號,員工的姓名,員工的年薪( 年薪=(月薪+績效)*12 )
但是有些員工沒有績效,這樣的話,最后返回的結果,沒有績效的員工就沒有年薪
命令:select empno,ename,(sal+comm)*12 INCOME from emp;
這時候我們就可以使用NVL函數
命令select empno,ename,(sal+NVL(comm,0))*12 INCOME from emp;
DECODE函數,這個函數比較重要,面試的時候可能會被問到
完整的員工信息如下:
如果我們想要查詢員工編號,員工姓名,員工的job,但是員工的job名稱卻是英文,我們看着不太好看,想要將其顯示為中文
命令: Select empno,ename,job,DECODE(job,'CLERK','辦事人員','SALESMAN','銷售人員','MANAGER','經理','--') 職位 From emp ;