Oracle 專有語法導致程式碼綁定廠商,遷移 DB2 時頻發相容性錯誤。本文整理十大高頻差異與 ANSI/DB2 相容寫法。
| 類別 | Oracle | DB2 | 相容/建議寫法 |
|---|---|---|---|
| 整數轉字串 | TO_CHAR(1) | CHAR(1) | CAST(1 AS CHAR) |
| 字串轉整數 | TO_NUMBER('1') | INT('1') | CAST('1' AS INT) |
| 字串轉浮點 | TO_NUMBER('1.1') | DOUBLE('1.1') | — |
| 浮點轉字串 | TO_CHAR(1.1) | CHAR(1.1) | — |
| 字串轉日期 | TO_DATE('2007-04-26','yyyy-mm-dd') | DATE('2007-04-26') | — |
| 字串轉時間戳 | TO_DATE('2007-04-26 08:08:08','YYYY-MM-DD HH24:MI:SS') | TO_DATE('2007-04-26 08:08:08','YYYY-MM-DD HH24:MI:SS') | 相容 |
| 日期轉字串 | TO_CHAR(TO_DATE(...),'yyyy-mm-dd') | CHAR(DATE('2007-04-29')) | — |
WHERE '1' IN (1)、WHERE '1'=1;DB2 嚴格型別檢查,需顯式轉型。AS t 或 t),Oracle 可省略。java.util.Date 對應 DB2 TIMESTAMP。ROWNUM;DB2 用 ROWNUMBER() OVER()。CASE WHEN。COALESCE。SYSDATE;DB2 CURRENT DATE。DB2Dialect。