字元串函數 1、 大小寫轉換函數:· 轉大寫:字元串 UPPER(字元串 | 數據列);· 轉小寫:字元串 LOWER(字元串 | 數據列)。 2、 首字母大寫,其餘字母小寫:字元串INITCAP(字元串 | 列) 3、 取得字元串長度:數字 LENGTH(字元串 | 4、 替換指定字元串的內容:字 ...
字元串函數
1、 大小寫轉換函數:
· 轉大寫:字元串 UPPER(字元串 | 數據列);
· 轉小寫:字元串 LOWER(字元串 | 數據列)。
2、 首字母大寫,其餘字母小寫:字元串INITCAP(字元串 | 列)
3、 取得字元串長度:數字 LENGTH(字元串 |
4、 替換指定字元串的內容:字元串 REPLACE(字元串 | 列,要替換的內容,新的內容)
5、 字元串截取操作:
· 由指定位置截取到結尾:字元串 SUBSTR(字元串 | 數據列,截取開始索引);
· 指定截取的開始和結束位置:字元串 SUBSTR(字元串 | 數據列,截取開始索引,截取結束索引);
字元串的索引下標是從 1 開始的
SUBSTR()函數還可以設置為負數,表示由後的指定位置開始
6、 去掉左右空格函數:字元串 TRIM(字元串 | 列)
7、截取年,月,日,時,分,秒。
extract ( { year | month | day | hour | minute | second } | { timezone_hour | timezone_minute } | { timezone_region | timezone_abbr } from { date_value | interval_value } )
數字函數
1、 四捨五入函數:數字 ROUND(數字 | 列 [,保留小數位])
2、 截取小數函數:數字 TRUNC(數字 | 列 [,保留小數位])
正數向後截取,負數向前截取
select trunc(sysdate, 'yy') from dual;--當年第一天 select trunc(sysdate, 'q') from dual;--當前時間所在的季度的第一天 select trunc(sysdate, 'mm') from dual;--當月第一天 select trunc(sysdate, 'd') from dual;--返回本周的第一天(周日為第一天)
3、 求模:數字 MOD(數字 1 | 列 1,數字 2 | 列 2)
日期函數
當前的系統日期時間,偽列:SYSDATE、SYSTIMESTAMP。
· 日期 + 數字 = 日期,表示若幹天之後的日期;
· 日期 – 數字 = 日期,表示若幹天之前的日期;
· 日期 – 日期 = 數字,表示兩個日期之間的間隔天數。
1、 計算兩個日期之間所經歷的月數:數字 MONTHS_BETWEEN(日期 1 | 列 1,日期 2 | 列 2)
2、 加上指定月之後的日期:日期 ADD_MONTHS(日期 | 列 ,月數)
思考題:要求計算出每一位雇員到今天為止雇佣的年限
A、 例如:今天是 2014 年 08 月 12 日,CLARK 的雇佣日期是:1981 年 06 月 09 日
B、 到今天 CLARK 已經在公司服務了:33 年、02 月、03 天
SELECT ename,hiredate, TRUNC(MONTHS_BETWEEN(SYSDATE,hiredate)/12) year , TRUNC(MOD(MONTHS_BETWEEN(SYSDATE,hiredate),12)) months , TRUNC(SYSDATE - ADD_MONTHS(hiredate,MONTHS_BETWEEN(SYSDATE,hiredate))) day FROM emp ;
3、 求出指定的下一個一周時間數的日期:日期 NEXT_DAY(日期 | 列,一周時間數)
4、 求出指定日期所在月的最後一天日期:日期 LAST_DAY(日期 | 列)
轉換函數
1、 轉字元串數據:字元串 TO_CHAR(數字 | 日期 | 列,轉換格式)
在進行轉換格式設置的時候要根據不同的數據類型進行格式標記的定義:
· 日期:年(yyyy)、月(mm)、日(dd)、時(HH、HH24)、分(mi)、秒(ss);
· 數字:一位任意數字(9)、本地貨幣(L)。
SELECT TO_CHAR(SYSDATE,'yyyy-mm-dd hh24:mi:ss') FROM dual ; 範例:拆分日期數據 SELECT TO_CHAR(SYSDATE,'yyyy') year , TO_CHAR(SYSDATE,'mm') months , TO_CHAR(SYSDATE,'dd') day FROM dual ; 範例:格式化數字顯示SELECT TOCHAR(234789234798,'L999,999,999,999,999') FROM dual
2、 轉日期數據:日期 TO_DATE(字元串,轉換格式)
範例:將字元串變為日期 SELECT '1981-09-15',TO_DATE('1981-09-15','yyyy-mm-dd') FROM dual ; 但是在 Oracle 之中提供有自動的轉換方式,如果字元串按照日期的格式編寫,那麼可以自動由字元串變為日期。
3、 轉數字類型:數字 TO_NUMBER(字元串,轉換格式)
範例:將字元串變為數字 SELECT TO_NUMBER('1') + TO_NUMBER('2') FROM dual ; SELECT '1' + '2' FROM dual ; 在 Oracle 裡面這些自動的數據類型轉換功能是非常方便的,包括日期和字元串、字元串和數字。
通用函數
1、 處理 null 數據:數字 NVL(列 | 數據,預設值)
2、 多數據判斷:數據 DECODE(欄位 | 數據,判斷數據 1,顯示數據 1,判斷數據 2,顯示數據 2,… [預設顯示])
SELECT ename,job , DECODE(job,'CLERK','辦事員','SALESMAN','銷售','MANAGER','經理','ANALYST','分析員','PRESIDENT','總裁','未 處理')