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

SQL Server 與 Oracle 常用數學函數對照表:遷移開發必備速查手冊

     編輯:關於SqlServer

數學函數對照總表

功能SQL Server (T-SQL)Oracle (PL/SQL)備註
絕對值ABS(-1)ABS(-1) FROM dual語法相同,Oracle 需 FROM dual
向上取整CEILING(-1.001) → 0CEIL(-1.001) → 0函數名拼寫不同
向下取整FLOOR(-1.001) → -2FLOOR(-1.001) → -2行為一致
截取整數CAST(-1.002 AS INT) → -1TRUNC(-1.002) → -1T-SQL 無 TRUNC,用 CAST/CONVERT
四捨五入ROUND(1.23456, 4) → 1.23460ROUND(1.23456, 4) → 1.2346T-SQL 保留尾隨 0,Oracle 自動去除
e 的冪次EXP(1) → 2.7182818284590451EXP(1) → 2.71828182精度不同,T-SQL 更高
自然對數LOG(2.7182818284590451) → 1LN(2.7182818284590451) → 1Oracle 專用 LN,T-SQL 用 LOG
以 10 為底對數LOG10(10) → 1LOG(10, 10) → 1Oracle LOG(base, value) 雙參數
平方根SQRT(4) → 2SQRT(4) → 2通用
冪運算POWER(2, 3) → 8POWER(2, 3) → 8通用
隨機數RAND() (0~1)DBMS_RANDOM.VALUE (0~1)Oracle 需套件呼叫
正負號SIGN(-5) → -1SIGN(-5) → -1通用
圓周率PI() → 3.14159...ACOS(-1) 或自定義Oracle 無內建 PI()

遷移關鍵差異提醒

  1. CEILING vs CEIL:拼寫不同,功能相同。
  2. TRUNC 缺失:T-SQL 使用 CAST(value AS INT) 或 CONVERT(INT, value) 截取小數;注意負數行為與 FLOOR 不同(CAST(-1.9 AS INT) = -1,FLOOR(-1.9) = -2)。
  3. LOG 參數順序:T-SQL LOG(float_expression) 固定自然對數;Oracle LOG(base, value) 可指定底數。T-SQL 以 10 為底用 LOG10。
  4. ROUND 尾隨零:T-SQL 保留指定小數位的尾隨零(如 1.23460),Oracle 自動截斷(1.2346)。匯出報表時注意格式化。
  5. DUAL 表:Oracle 無表查詢必須 FROM dual,T-SQL 直接 SELECT ABS(-1)。

擴展:常用字串/日期函數對照(速查)

類別SQL ServerOracle
字串連接+ 或 CONCAT()|| 或 CONCAT()
子字串SUBSTRING(str, start, len)SUBSTR(str, start, len)
字串長度LEN() / DATALENGTH()LENGTH() / LENGTHB()
大小寫轉換UPPER()/LOWER()UPPER()/LOWER()
當前日期時間GETDATE() / SYSDATETIME()SYSDATE / SYSTIMESTAMP
日期加減DATEADD(day, 1, GETDATE())SYSDATE + 1
日期差異DATEDIFF(day, d1, d2)d2 - d1 (數值) 或 MONTHS_BETWEEN
日期截取CAST(GETDATE() AS DATE)TRUNC(SYSDATE)

總結

掌握核心函數對照表,配合「語法轉換 → 語義驗證 → 效能基準測試」三步驟,可將 Oracle → SQL Server 遷移中的函數層風險降至最低。建議團隊維護內部遷移 Wiki,持續補充業務特有的 UDF 對應關係。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved