| 操作 | 語法範例 |
|---|---|
| 複製表結構+資料 | CREATE TABLE tmps AS SELECT * FROM emp; |
| 子查詢插入資料 | INSERT INTO temps SELECT * FROM user_objects; |
| 遞歸查詢 (層級結構) | SELECT * FROM emp START WITH ename='KING' CONNECT BY PRIOR empno = mgr; |
| 顯示層級路徑 | SELECT empno, ename, SYS_CONNECT_BY_PATH(ename, '/') FROM emp START WITH ename='KING' CONNECT BY PRIOR empno = mgr; |
| 新增欄位 | ALTER TABLE tableA ADD col1 VARCHAR2(2000); |
| 函數 | 說明 | 範例 |
|---|---|---|
LPAD(str, len, pad) | 左補齊至指定長度 | LPAD('9', 5, '0') → '00009' |
RPAD(str, len, pad) | 右補齊 | RPAD('A', 5, '*') → 'A****' |
LOWER/UPPER/INITCAP | 小寫/大寫/首字母大寫 | INITCAP('hello world') → 'Hello World' |
LENGTH | 字串長度 | |
SUBSTR(str, pos, len) | 擷取子字串 | SUBSTR('123456', 2, 3) → '234' |
INSTR(str, substr, [pos, occ]) | 搜尋子字串位置 | INSTR('123456', '23') → 2 |
LTRIM/RTRIM/TRIM | 去除左/右/兩側空格 | |
CONCAT / || | 字串連接 | 'A' || 'B' → 'AB' |
NUMBER(p, s):精度 1~38,標度 -84~127。CEIL(n):向上取整 `CEIL(23.9)→24`、`CEIL(-23.8)→-23`。FLOOR(n):向下取整 `FLOOR(23.9)→23`、`FLOOR(-23.9)→-24`。MOD(m, n):餘數 `MOD(12,5)→2`。SIGN(n):正負號 `1 / 0 / -1`。POWER(m, n):冪 `POWER(4,3)→64`。TRUNC(n, d):截斷 `TRUNC(2.789,2)→2.78`(不四捨五入)。ROUND(n, d):四捨五入 `ROUND(2.789,2)→2.79`。| 需求 | 函數/語法 | 範例 |
|---|---|---|
| 目前日期時間 | SYSDATE | SELECT SYSDATE FROM dual; |
| 加減月份 | ADD_MONTHS(date, n) | ADD_MONTHS(SYSDATE, 1) |
| 字串轉日期 | TO_DATE(str, fmt) | TO_DATE('2011-09-12','YYYY-MM-DD') |
| 該月最後一天 | LAST_DAY(date) | LAST_DAY(TO_DATE('2011-09-12','YYYY-MM-DD')) |
| 兩日期月份差 | MONTHS_BETWEEN(d1, d2) | MONTHS_BETWEEN('2011-09-18','2011-09-14') |
| 下一個指定星期 | NEXT_DAY(date, weekday) | NEXT_DAY('2011-09-13', 2) → 下一個週一 |
| 日期格式化輸出 | TO_CHAR(date, 'YYYY-MM-DD HH24:MI:SS') | TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS') |
格式元素: `YYYY` 年、`MM` 月、`DD` 日、`HH24` 24小時、`MI` 分、`SS` 秒。
| 型別 | 最大長度 | 特性 |
|---|---|---|
| CHAR | 2000 位元組 | 固定長,不足右補空格 |
| VARCHAR | 4000 位元組 | 變長,標準型別(Oracle 建議用 VARCHAR2) |
| VARCHAR2 | 4000 位元組 | 變長,Oracle 專用,效能最佳 |
這份筆記涵蓋 Oracle 入門 80% 的高頻操作。建議初學者: