首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Oracle 查詢轉 SQL Server 遷移指南:數字、日期、字串長度轉換對照表

     編輯:Oracle 資料庫基礎

前言

異構資料庫遷移時,Oracle PL/SQL 與 SQL Server T-SQL 在內建函數上差異最大。本文針對**數字轉字串、日期運算、字串長度**三大高頻場景提供對照轉換表。

1. 數字轉字串

OracleSQL Server說明
TO_CHAR(123.45, '99999999999999')STR(123.45, 14)固定寬度,SQL Server STR 無格式模板,需配合 ROUND/CAST
TO_CHAR(123.455, '999.99')STR(ROUND(123.455,2), 6, 2)STR(值, 總長, 小數位)
TO_CHAR(expiry_date, 'DDMONYYYY')CAST(REPLACE(CONVERT(VARCHAR(12), expiry_date, 106), ' ', '') AS VARCHAR(9))Style 106 = dd mon yyyy,再移除空格

2. 字串長度

OracleSQL Server
LENGTH('SQLMAG')LEN('SQLMAG')

注意:LEN **不計算尾端空格**,DATALENGTH 計算位元組數 (Unicode 佔 2 位元組)。

3. 日期取得與運算

功能OracleSQL Server
當前日期時間SYSDATEGETDATE()
日期加減月份ADD_MONTHS(SYSDATE, 12)DATEADD(MONTH, 12, GETDATE())
日期差 (天數)SYSDATE - ADD_MONTHS(SYSDATE, 12)DATEDIFF(DAY, GETDATE(), DATEADD(MONTH, 12, GETDATE()))
日期截斷至月首TRUNC(SYSDATE, 'MM')DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()), 0)
本月最後一天LAST_DAY(SYSDATE)EOMONTH(GETDATE()) (2012+)

4. 字串連接

OracleSQL Server
'Name' || 'LastName''Name' + 'LastName'

5. 空值處理

OracleSQL Server
NVL(col, 'default')ISNULL(col, 'default') 或 COALESCE(col, 'default')

遷移檢核清單

  • 所有 TO_CHAR 格式模板需逐一對應 CONVERT Style 或 FORMAT (2012+)。
  • 日期運算邏輯不同:Oracle 日期 ± 數字 = 天數;SQL Server 必須用 DATEADD。
  • DUAL 表在 SQL Server **不存在**,純量查詢直接 SELECT GETDATE() 即可。
  • 隱性型態轉換行為不同,遷移後**必須全迴歸測試**。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved