| 函數 | 說明 | 範例 | 結果 |
|---|---|---|---|
| ASCII(c) | 回傳字元十進位碼 | ASCII('A') | 65 |
| CHR(n) | 回傳碼值對應字元 | CHR(65) | 'A' |
| CONCAT(s1,s2) | 串接兩字串 | CONCAT('010-','88888888') | '010-88888888' |
| INITCAP(s) | 首字母大寫 | INITCAP('smith') | 'Smith' |
| INSTR(s1,s2,pos,occ) | 搜尋子字串位置 | INSTR('Oracle training','ra',1,2) | 9 |
| LENGTH(s) | 字串長度(字元數) | LENGTH('高千勁') | 3 |
| LOWER/UPPER(s) | 全小寫/大寫 | UPPER('AaBb') | 'AABB' |
| LPAD/RPAD(s,len,pad) | 左/右填充至指定長度 | LPAD(RPAD('gao',10,'*'),17,'*') | '*******gao*******' |
| LTRIM/RTRIM/TRIM(s) | 移除左/右/兩側指定字元(預設空白) | TRIM(' gao ') | 'gao' |
| SUBSTR(s,pos,len) | 擷取子字串 | SUBSTR('13088888888',3,8) | '08888888' |
| REPLACE(s,old,new) | 字串替換 | REPLACE('he love you','he','i') | 'i love you' |
| SOUNDEX(s) | 同音字串編碼(模糊比對) | SOUNDEX('weather')=SOUNDEX('wether') | TRUE |
| 函數 | 說明 | 範例 | 結果 |
|---|---|---|---|
| ABS(n) | 絕對值 | ABS(-100) | 100 |
| ACOS/ASIN/ATAN(n) | 反三角函數(弧度) | ACOS(-1) | 3.1415927 |
| CEIL/FLOOR(n) | 向上/向下取整 | CEIL(3.14) | 4 |
| COS/SIN/TAN(n) | 三角函數(弧度) | COS(3.14159) | -1 |
| COSH/SINH/TANH(n) | 雙曲函數 | COSH(20) | 2.4258E8 |
| EXP(n) | e 的 n 次方 | EXP(1) | 2.71828 |
| LN(n) | 自然對數 | LN(2.71828) | 1 |
| LOG(b,n) | 以 b 為底對數 | LOG(2,4) | 2 |
| MOD(m,n) | 餘數 | MOD(10,3) | 1 |
| POWER(m,n) | m 的 n 次方 | POWER(2,10) | 1024 |
| ROUND(n,prec)/TRUNC(n,prec) | 四捨五入/截斷至精度 | ROUND(55.5), TRUNC(-55.5) | 56, -55 |
| SIGN(n) | 正負號 | SIGN(-100) | -1 |
| SQRT(n) | 平方根 | SQRT(4) | 2 |
| 函數 | 說明 | 範例 |
|---|---|---|
| SYSDATE | 資料庫當前日期時間 | SYSDATE |
| ADD_MONTHS(d,n) | 日期加減月份 | ADD_MONTHS(SYSDATE,2) |
| MONTHS_BETWEEN(d1,d2) | 兩日期月份差 | MONTHS_BETWEEN(SYSDATE, hiredate) |
| NEXT_DAY(d,weekday) | 下一個指定週幾 | NEXT_DAY(SYSDATE,'FRIDAY') |
| LAST_DAY(d) | 該月最後一天 | LAST_DAY(SYSDATE) |
| ROUND(d,'MONTH')/TRUNC(d,'MONTH') | 日期四捨五入/截斷至月首 | ROUND(SYSDATE,'MONTH') |
| EXTRACT(YEAR/MONTH/DAY FROM d) | 擷取日期欄位 | EXTRACT(YEAR FROM SYSDATE) |
| 函數 | 說明 | 範例 |
|---|---|---|
| TO_CHAR(d/fmt) | 日期/數值轉字串 | TO_CHAR(SYSDATE,'YYYY-MM-DD') |
| TO_DATE(s/fmt) | 字串轉日期 | TO_DATE('2023-01-01','YYYY-MM-DD') |
| TO_NUMBER(s/fmt) | 字串轉數值 | TO_NUMBER('$1,234.56','$9,999.99') |
| NVL(e1,e2) | e1 為 NULL 回傳 e2 | NVL(comm,0) |
| NVL2(e1,e2,e3) | e1 NULL 回傳 e3 否則 e2 | NVL2(comm,'Y','N') |
| NULLIF(e1,e2) | e1=e2 回傳 NULL 否則 e1 | NULLIF(len,0) |
| COALESCE(e1,e2,...) | 回傳第一個非 NULL | COALESCE(comm, bonus, 0) |
| CASE WHEN ... THEN ... ELSE ... END | 條件邏輯 | CASE WHEN sal>5000 THEN 'High' ELSE 'Low' END |
| DECODE(e, s1, r1, s2, r2, ..., def) | 舊式條件判斷 | DECODE(deptno,10,'ACCT',20,'RES','OTH') |
SUM, AVG, COUNT, MAX, MIN:基礎彙總。GROUP BY ROLLUP/CUBE/GROUPING SETS:多維小計/總計。GROUPING(col):判斷該列是否為彙總產生(0=明細, 1=彙總)。RANK, DENSE_RANK, ROW_NUMBER:視窗排序。LAG/LEAD, FIRST_VALUE/LAST_VALUE:跨列存取。NLS_SORT 影響 UPPER、INSTR)。TIMESTAMP WITH TIME ZONE。ROUND/TRUNC 對負數行為不同:ROUND(-55.5)=-56, TRUNC(-55.5)=-55。TO_CHAR/TO_DATE 格式模板,避免隱含轉換導致效能問題。