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

Oracle vs SQL Server 常用分析函數對照速查表

     編輯:Oracle 資料庫基礎

本文整理 Oracle 與 SQL Server 在數學、字串、日期、彙總等類別的常用函數對應關係,供跨平台開發、移植專案快速查閱。僅列舉高頻函數,非完整功能清單,實務以解決問題為優先。

數學函數

功能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) → 1.23460ROUND(1.23456,4) → 1.2346
e 次方EXP(1)EXP(1)
自然對數LOG(2.718...)LN(2.718...)
以 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) 或自定
三角函數SIN/COS/TAN (弧度)SIN/COS/TAN (弧度)
反三角函數ASIN/ACOS/ATAN/ATAN2ASIN/ACOS/ATAN/ATAN2
弧度↔角度DEGREES/RADIANS無內建,自行換算

彙總與比較函數

功能SQL ServerOracle
集合最大值MAX(val) FROM (VALUES ...)GREATEST(1,-2,4,3)
集合最小值MIN(val) FROM (VALUES ...)LEAST(1,-2,4,3)
NULL 替換ISNULL(col, 10)NVL(col, 10)

字串函數

功能SQL ServerOracle
ASCII 碼ASCII('a')ASCII('a')
碼轉字元CHAR(97)CHR(97)
串接'11'+'22'+'33''11'||'22'||'33' 或 CONCAT('11','22')||'33'
子串位置CHARINDEX('s','sdsq',2)INSTR('sdsq','s',2)
模糊模式位置PATINDEX('%d%q%','sdsfasdqe')無直接對應,INSTR 配合第 4 參數控制出現次數
取子串SUBSTRING('abcd',2,2)SUBSTR('abcd',2,2)
指定長度替換STUFF('abcdef',2,3,'ijklmn')REPLACE('abcdef','bcd','ijklmn')
字元級轉換無TRANSLATE('fasdbfasegas','fa','我')
長度LEN / DATALENGTHLENGTH
大小寫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)無內建,RPAD 技巧或 PL/SQL
發音相似比較SOUNDEX, DIFFERENCESOUNDEX

日期時間函數

功能SQL ServerOracle
目前日期時間GETDATE()SYSDATE (精度至秒), SYSTIMESTAMP (精度至毫秒+時區)
日期加減天GETDATE() + 1SYSDATE + 1
取日期部份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/DATENAME(元件,日期)TO_CHAR(日期,'格式')
本月最後一天無直函數LAST_DAY(SYSDATE)
本週指定週幾無直函數NEXT_DAY(SYSDATE,7) (7=週六)
字串轉日期CAST('2024-01-01' AS DATETIME)TO_DATE('2024-01-01','YYYY-MM-DD')
兩日期差值 (秒)DATEDIFF(SS, d1, d2)(d1-d2)*24*60*60 (日期相減得天數)
日期加減間隔DATEADD(MI, 8, GETDATE())SYSDATE + 8/24/60 (以天為單位)
時區轉換無直函數 (需 AT TIME ZONE)NEW_TIME(SYSDATE,'YDT','GMT')

日期格式元件對照 (常用)

元件SQL Server (DATEPART)Oracle (TO_CHAR)
年YY, YYYYYYYY, YY, RRRR, RR
季QQ, QQ
月MM, MMM, MON, MONTH, RM
日DD, DDD, DDD
週WK, WWWW, IW (ISO 週)
星期DWD, DY, DAY
時HH, HH12, HH24HH, HH12, HH24
分MI, NMI
秒SS, SSS
毫秒MSFF, FF3...

常用時區代碼 (Oracle NEW_TIME)

GMT   格林威治標準時間
EST/EDT  東部標準/夏令時間
CST/CDT  中部標準/夏令時間
MST/MDT  山區標準/夏令時間
PST/PDT  太平洋標準/夏令時間
YST/YDT  猶肯標準/夏令時間 (北京東八區常用 YDT)

提醒:Oracle 12c+ 推薦使用 FROM_TZ/AT TIME ZONE 替代 NEW_TIME;SQL Server 2016+ 支援 AT TIME ZONE。跨平台移植時請以實測為準。

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