單行函數對每行資料獨立運算,返回單一值。分為:字串、數值、日期、轉換、通用五大類。
| 函數 | 語法 | 說明 | 範例 |
|---|---|---|---|
| ASCII | ASCII(char) | 返回字元 ASCII 碼 | ASCII('A')=65 |
| CHR | CHR(n) | 返回碼值對應字元 | CHR(65)='A' |
| CONCAT | CONCAT(s1,s2) | 串接兩字串 (等同 ||) | CONCAT('A','B')='AB' |
| INITCAP | INITCAP(str) | 首字母大寫其餘小寫 | INITCAP('smith')='Smith' |
| INSTR | INSTR(str, substr, pos, nth) | 搜尋子字串位置 | INSTR('Oracle','ra',1,2)=9 |
| LENGTH | LENGTH(str) | 字串長度 (字元數) | LENGTH('中文')=2 |
| LOWER/UPPER | LOWER/UPPER(str) | 大小寫轉換 | UPPER('abc')='ABC' |
| LPAD/RPAD | LPAD/RPAD(str, n, pad) | 左/右填充至指定長度 | RPAD('Hi',5,'*')='Hi***' |
| LTRIM/RTRIM/TRIM | TRIM([BOTH|LEADING|TRAILING] trim_char FROM str) | 去除空白或指定字元 | TRIM(' AB ')='AB' |
| SUBSTR | SUBSTR(str, pos, len) | 擷取子字串 | SUBSTR('Hello',2,3)='ell' |
| REPLACE | REPLACE(str, old, new) | 字串替換 | REPLACE('ABC','B','X')='AXC' |
| TRANSLATE | TRANSLATE(str, from, to) | 字元級轉換 | TRANSLATE('ABC','AB','12')='12C' |
| SOUNDEX | SOUNDEX(str) | 發音相似度編碼 | SOUNDEX('Smith')=S530 |
| 函數 | 語法 | 說明 | 範例 |
|---|---|---|---|
| ABS | ABS(n) | 絕對值 | ABS(-5)=5 |
| CEIL/FLOOR | CEIL/FLOOR(n) | 向上/向下取整 | CEIL(3.2)=4, FLOOR(3.8)=3 |
| ROUND | ROUND(n, [dec]) | 四捨五入 | ROUND(3.14159,2)=3.14 |
| TRUNC | TRUNC(n, [dec]) | 截斷 (不四捨五入) | TRUNC(3.14159,2)=3.14 |
| MOD | MOD(m, n) | 餘數 | MOD(10,3)=1 |
| POWER | POWER(m, n) | 冪運算 | POWER(2,3)=8 |
| SQRT | SQRT(n) | 平方根 | SQRT(16)=4 |
| EXP/LN/LOG | EXP(n), LN(n), LOG(b,n) | 指數/自然對數/對數 | LN(2.718)=1 |
| SIGN | SIGN(n) | 正負號 | SIGN(-5)=-1 |
| SIN/COS/TAN | 三角函數 | 弧度制 | SIN(0)=0 |
| 函數 | 語法 | 說明 | 範例 |
|---|---|---|---|
| SYSDATE | SYSDATE | 資料庫伺服器當前日期時間 | 2024-01-15 14:30:00 |
| CURRENT_DATE | CURRENT_DATE | Session 時區當前日期 | |
| SYSTIMESTAMP | SYSTIMESTAMP | 含時區與毫秒的時間戳 | |
| ADD_MONTHS | ADD_MONTHS(d, n) | 加減月份 | ADD_MONTHS(SYSDATE,3) |
| MONTHS_BETWEEN | MONTHS_BETWEEN(d1, d2) | 兩日期月份差 | MONTHS_BETWEEN(d1,d2) |
| LAST_DAY | LAST_DAY(d) | 該月最後一天 | LAST_DAY(SYSDATE) |
| NEXT_DAY | NEXT_DAY(d, '星期X') | 下一個指定週幾 | NEXT_DAY(SYSDATE,'FRIDAY') |
| ROUND | ROUND(d, 'fmt') | 日期四捨五入 | ROUND(SYSDATE,'MONTH') |
| TRUNC | TRUNC(d, 'fmt') | 日期截斷 | TRUNC(SYSDATE,'YEAR') |
| EXTRACT | EXTRACT(YEAR|MONTH|DAY FROM d) | 擷取日期元件 | EXTRACT(MONTH FROM SYSDATE)=1 |
| 函數 | 語法 | 說明 |
|---|---|---|
| TO_CHAR | TO_CHAR(n|d, 'fmt', 'nls') | 數值/日期→字串 |
| TO_DATE | TO_DATE(char, 'fmt', 'nls') | 字串→日期 |
| TO_NUMBER | TO_NUMBER(char, 'fmt', 'nls') | 字串→數值 |
| CAST | CAST(expr AS type) | ANSI 標準轉換 |
常用日期格式元素:YYYY/MM/DD/HH24/MI/SS/DAY/MON/DY/WW/IW/CC/Q/RM/AM/PM/TZD/TZH/TZM
常用數值格式元素:9(選擇性數字)/0(強制零)/,(千分位)/.(小數點)/$(貨幣)/FM(抑制空白)
| 函數 | 語法 | 說明 | 範例 |
|---|---|---|---|
| NVL | NVL(expr1, expr2) | expr1 為 NULL 回傳 expr2 | NVL(COMM,0) |
| NVL2 | NVL2(expr1, expr2, expr3) | expr1 不為 NULL 回傳 expr2 否則 expr3 | NVL2(MGR,'有','無') |
| NULLIF | NULLIF(expr1, expr2) | 相等回傳 NULL 否則 expr1 | NULLIF(LEN,0) |
| COALESCE | COALESCE(expr1, expr2, ...) | 返回第一個非 NULL | COALESCE(A,B,C) |
| DECODE | DECODE(expr, search, result [, search, result]... [, default]) | 等值比對分支 | DECODE(SEX,1,'男',2,'女','未知') |
| CASE | CASE expr WHEN v1 THEN r1 ... ELSE re END | ANSI 標準條件邏輯 | CASE GRADE WHEN 'A' THEN 100... |
| GREATEST/LEAST | GREATEST/LEAST(expr1, expr2, ...) | 最大/最小值 | GREATEST(1,5,3)=5 |
SYSDATE + INTERVAL '1' DAY)