| # | 功能 | Oracle 寫法 | DB2 寫法 | 關鍵差異點 |
|---|---|---|---|---|
| 1 | 限制前 N 行 | WHERE ROWNUM <= n | FETCH FIRST n ROWS ONLY | DB2 不支持變量,動態用 ROW_NUMBER() |
| 2 | 當前日期時間 | SELECT SYSDATE FROM DUAL | SELECT CURRENT TIMESTAMP FROM SYSIBM.SYSDUMMY1 | 虛表不同,類型精度不同 |
| 3 | 字符串拼接 | col1 || col2 / CONCAT(col1,col2) | col1 || col2 / CONCAT(col1,col2) | 需啟用兼容性向量或 SET CONCAT |
| 4 | 查詢表結構 | DESC table / USER_TAB_COLUMNS | DESCRIBE TABLE / SYSCAT.COLUMNS | 系統目錄視圖體系不同 |
| 5 | 內連接 | WHERE a.id = b.id (舊語法) | INNER JOIN ... ON ... | 統一遷移至 ANSI SQL-92 |
| 6 | 外連接 | (+) 標記 | LEFT/RIGHT/FULL OUTER JOIN ... ON ... | DB2 不支持 (+),支持全外連接 |
| 7 | 執行腳本 | @file.sql (SQL*Plus) | db2 -tvf file.sql | CLP 參數 -t(分號) -v(回顯) -f(文件) |
NVL(a,b) → COALESCE(a,b) (標準 SQL,多參數)SYSDATE+7 → CURRENT DATE + 7 DAYS (標籤間隔)本文為精簡速查版,詳細遷移指南、性能調優對比、工程化交付標準請參考《Oracle 到 DB2 遷移速查手冊:7 大核心語法差異與等效實現對照表》(文章 ID: 98457)。