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

Oracle 與 SQL Server 函數對照表:數學、字串、日期操作全對比

     編輯:Oracle 資料庫基礎

兩大資料庫函數差異快速查詢

Oracle 與 Microsoft SQL Server (T-SQL) 在函數命名、語法與功能上存在諸多差異。本文整理常用數學、字串、日期、比較等函數對照,助您快速移植或雙平台開發。

數學函數對照

功能SQL ServerOracle
絕對值ABS(-1)ABS(-1)
無條件進位CEILING(-1.001)CEIL(-1.001)
無條件捨去FLOOR(-1.001)FLOOR(-1.001)
截取整數CAST(-1.002 AS INT)TRUNC(-1.002)
四捨五入ROUND(1.23456,4)ROUND(1.23456,4)
e 的 n 次方EXP(1)EXP(1)
自然對數LOG(值)LN(值)
以 10 為底對數LOG10(10)LOG(10,10)
平方SQUARE(4)POWER(4,2)
平方根SQRT(4)SQRT(4)
任意次方POWER(3,4)POWER(3,4)
隨機數RAND()DBMS_RANDOM.VALUE(0,1)
正負號SIGN(-8)SIGN(-8)
圓周率PI()無內建,可用 ACOS(-1)
弧度轉角度DEGREES()無內建
角度轉弧度RADIANS()無內建

字串函數對照

功能SQL ServerOracle
ASCII 碼ASCII('a')ASCII('a')
碼轉字元CHAR(97)CHR(97)
字串串聯'11'+'22'+'33'CONCAT('11','22') || '33'
子字串位置CHARINDEX('s','sdsq',2)INSTR('sdsq','s',2)
模糊搜尋位置PATINDEX('%d%q%','sdsfasdqe')無直接對應,可用 INSTR 多次搜尋
擷取子字串SUBSTRING('abcd',2,2)SUBSTR('abcd',2,2)
指定位置替換STUFF('abcdef',2,3,'ijklmn')REPLACE('abcdef','bcd','ijklmn')
全部字元替換無TRANSLATE('fasdbfasegas','fa','我')
長度LEN / DATALENGTHLENGTH / LENGTHB
大小寫轉換LOWER / UPPERLOWER / UPPER
首字母大寫無INITCAP('abcd dsaf')
左補空格SPACE(10)+'abcd'LPAD('abcd',14)
右補空格'abcd'+SPACE(10)RPAD('abcd',14)
移除空格LTRIM / RTRIMLTRIM / RTRIM / TRIM
重複字串REPLICATE('abcd',2)無直接對應
發音比對SOUNDEX / DIFFERENCESOUNDEX

日期函數對照

功能SQL ServerOracle
目前時間GETDATE()SYSDATE
日期加減天日期 + 整數日期 + 整數
取日期部份CONVERT(CHAR(10),GETDATE(),20)TRUNC(SYSDATE) 或 TO_CHAR(SYSDATE,'YYYY-MM-DD')
取時間部份CONVERT(CHAR(8),GETDATE(),108)TO_CHAR(SYSDATE,'HH24:MI:SS')
日期部份擷取DATEPART / DATENAMETO_CHAR(日期, '格式')
月份最後一天無直接函數LAST_DAY(SYSDATE)
本週指定週日無直接函數NEXT_DAY(SYSDATE, 7)
字串轉日期CAST('2004-09-08' AS DATETIME)TO_DATE('2004-01-05','YYYY-MM-DD')
日期差值(秒)DATEDIFF(SS, d1, d2)(d1-d2)*24*60*60
日期加減(分鐘)DATEADD(MI, 8, GETDATE())SYSDATE + 8/60/24
時區轉換無內建NEW_TIME(SYSDATE, 'YDT', 'GMT')

NULL 處理與集合比較

功能SQL ServerOracle
NULL 替換ISNULL(F2,10)NVL(F2,10)
集合最大值MAX() 配合 UNIONGREATEST(1,-2,4,3)
集合最小值MIN() 配合 UNIONLEAST(1,-2,4,3)

Oracle 時區代碼參考

  • AST/ADT:大西洋標準/夏令時間
  • BST/BDT:白令海標準/夏令時間
  • CST/CDT:中部標準/夏令時間
  • EST/EDT:東部標準/夏令時間
  • GMT:格林威治標準時間
  • HST/HDT:阿拉斯加-夏威夷標準/夏令時間
  • MST/MDT:山區標準/夏令時間
  • NST:紐芬蘭標準時間
  • PST/PDT:太平洋標準/夏令時間
  • YST/YDT:育空標準/夏令時間(北京屬東八區,可用 YDT)

遷移建議

跨平台遷移時,除函數名稱對應外,尚需注意:日期格式模板差異、隱含型別轉換行為、NULL 排序差異、大小寫敏感度設定等。建議建立函數包裝層或使用 ANSI SQL 標準語法提高可移植性。

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