首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 遷移至 Oracle 完整注意事項清單:八大類型差異與對應方案

     編輯:MySQL 資料庫相關知識

遷移核心差異與解決方案

類別MySQLOracle遷移對策
自動增長AUTO_INCREMENT無原生支援建立 SEQUENCE,INSERT 時用 seq_name.NEXTVAL
字串引號單/雙引號皆可僅單引號所有雙引號改單引號;單引號內單引號雙寫 ('')
分頁查詢LIMIT offset, count無 LIMIT使用 ROWNUM 子查詢雙層包裝 (文中提供兩種標準寫法)
長字串 (>4000)TEXT/BLOBCLOB/BLOB超過 4000 字元改用 CLOB,配合 DBMS_LOB 套件操作
日期型別DATE/TIME/DATETIME僅 DATE (含時分秒)統一用 DATE;當前時間 SYSDATE;字串轉日期 TO_DATE;日期轉字串 TO_CHAR
日期運算DATE_SUB(NOW(), INTERVAL 7 DAY)SYSDATE - 7Oracle 日期直接加減數字代表天數
空值處理NOT NULL 欄位可存空字串NOT NULL 真正禁止 NULL導入前將空字串轉為單空格 ' ' 或預設值
模糊查詢LIKE '%str%'同語法但無法用索引改用 INSTR(col, 'str') > 0 獲得索引支援與精確度
游標/結果集自動管理手動釋放程序/函數結束時顯式關閉游標、釋放結果集

Oracle 分頁標準寫法 (兩種)

-- 寫法一:IN 子查詢
SELECT id, cols FROM table
WHERE id IN (
    SELECT id FROM (
        SELECT ROWNUM AS rn, id FROM table WHERE cond1 ORDER BY cond2
    ) WHERE rn > 80 AND rn < 100
) ORDER BY cond3;

-- 寫法二:內聯視圖
SELECT * FROM (
    SELECT ROWNUM AS rn, c.* FROM (
        SELECT cols FROM table WHERE cond1 ORDER BY cond2
    ) c
) WHERE rn > 80 AND rn < 100 ORDER BY cond3;

遷移檢查清單

  1. 所有 AUTO_INCREMENT → SEQUENCE + .NEXTVAL
  2. 雙引號 → 單引號,單引號轉義
  3. LIMIT → ROWNUM 雙層子查詢
  4. TEXT >4000 → CLOB + DBMS_LOB
  5. 日期函數/運算全面改寫
  6. 空字串 → 空格/預設值
  7. LIKE '%...%' → INSTR() > 0
  8. 程式碼補充游標/結果集釋放邏輯
  9. 測試驗證:資料完整性、效能基準、應用功能回歸
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved