| 項目 | Oracle (PL/SQL) | SQL Server (T-SQL) | 說明 |
|---|---|---|---|
| 虛擬表 DUAL | SELECT 'x' FROM dual | SELECT 'x' | SQL Server 不需 FROM 子句 |
| 字串連接 | || | + | Oracle 以 || 連接,SQL Server 用 + |
| 數字截斷 TRUNC | TRUNC(15.79, 1) → 15.7 | ROUND(15.79, 1, 1) 或 FLOOR(15.79*10)/10 | SQL Server ROUND 第 3 參數 1 表截斷 |
| 數字轉字串 TO_CHAR | TO_CHAR(123.45, '999999') | STR(123.45, 14) 或 CAST/CONVERT | STR 固定寬度,無格式化參數 |
| 日期轉字串 TO_CHAR | TO_CHAR(date, 'DDMONYYYY') | CONVERT(VARCHAR(12), date, 106) 並 REPLACE 空格 | CONVERT style 代碼對應格式 |
| 字串長度 | LENGTH('SQLMAG') | LEN('SQLMAG') | LEN 不計尾端空白,DATALENGTH 計算位元組 |
| 子查詢必須 FROM | 強制 FROM dual | 不需 FROM | 同 DUAL 表差異 |
TRUNC、DECODE) 封裝為 SQL Server UDF,維持呼叫介面一致。Oracle PL/SQL 與 SQL Server T-SQL 雖同根於 ANSI SQL,但擴充語法差異顯著。系統性建立對照表、善用遷移工具、封裝相容函數、嚴格測試驗證,是成功遷移的四大支柱。