從建表、結構變更、增刪改查,到字串/日期/轉換/空值/彙總函數,彙整開發最高頻的 Oracle 核心語法與實戰範例,附官方日期格式模型圖解。
CREATE TABLE employee ( id NUMBER(4), name VARCHAR2(20) NOT NULL, gender CHAR(1) DEFAULT 'M', birth DATE, salary NUMBER(6,2), comm NUMBER(6,2), job VARCHAR2(30), manager NUMBER(4), deptno NUMBER(2) );
INSERT INTO employee (id,name,job,salary) VALUES (1001,'jack','PROGRAMMER',5500);
INSERT INTO employee (id,name,job,birth) VALUES (1002,'LARRY','ANALYST',TO_DATE('1994-10-22','YYYY-MM-DD'));
UPDATE employee SET salary=10 WHERE name='LARRY';
DELETE FROM employee WHERE birth IS NULL;
| 函數 | 用法 | 範例結果 |
|---|---|---|
| CONCAT / || | 連接 | CONCAT('a','b') → 'ab' |
| LENGTH | 長度 | CHAR 含尾部空格 |
| UPPER/LOWER/INITCAP | 大/小寫/首字大寫 | INITCAP('hello world') → 'Hello World' |
| TRIM/LTRIM/RTRIM | 去除字元/空格 | TRIM('e' FROM 'elite') → 'lit' |
| LPAD/RPAD | 左/右填充 | LPAD('12',5,'$#') → '$#$12' |
| SUBSTR | 子字串 | SUBSTR('abcdefg',-2,2) → 'fg' |
| INSTR | 尋找位置 | INSTR('thinking in java','i',4,2) → 第 2 個 i 從第 4 字元起找 |
TO_DATE('2002-01-01','YYYY-MM-DD')
TO_CHAR(hiredate, 'YYYY"年"MM"月"DD"日"')
常用格式元素:
YYYY (4位)、YY (2位)、YEAR (拼寫)MM (2位)、MON (縮寫)、MONTH (全名)DD (月內)、DDD (年內)、DAY (星期名)HH24 (24制)、HH12 (12制)MI/SSFM 去除前導零/空格(如 FMMM)| 函數 | 說明 | 範例 |
|---|---|---|
| LAST_DAY(d) | 該月最後一天 | LAST_DAY(SYSDATE) |
| ADD_MONTHS(d, n) | 加減 n 月 | ADD_MONTHS(SYSDATE, 3) |
| MONTHS_BETWEEN(d1, d2) | 月份差(可含小數) | MONTHS_BETWEEN(d1, d2) |
| NEXT_DAY(d, '星期三') | 下一個指定週幾 | NEXT_DAY(SYSDATE, '星期三') |
| ROUND(d, 'fmt') | 日期捨入(最近) | ROUND(d, 'MONTH') → 月初 |
| TRUNC(d, 'fmt') | 日期截斷(向下) | TRUNC(d, 'YEAR') → 年初 |
| EXTRACT(fmt FROM d) | 擷取部分 | EXTRACT(YEAR FROM SYSDATE) |