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

Oracle 與 SQL Server 分析挖掘函數對照表:數學、字串、日期、轉換

     編輯:Oracle 資料庫相關知識

說明

僅列出常用分析/挖掘函數對應,**非完整函數清單**。實際開發以解決問題為優先,勿盲目比較優劣。

數學函數

功能SQL ServerOracle備註
絕對值ABS(-1)ABS(-1) FROM DUAL
向上取整CEILING(-1.001)CEIL(-1.001) FROM DUALOracle 無 CEILING
向下取整FLOOR(-1.001)FLOOR(-1.001) FROM DUAL
截取整數CAST(-1.002 AS INT)TRUNC(-1.002) FROM DUALTRUNC 可指定小數位
四捨五入ROUND(1.23456,4)ROUND(1.23456,4) FROM DUAL語法相同
e 的冪EXP(1)EXP(1) FROM DUAL
自然對數LOG(2.718...)LN(2.718...) FROM DUALOracle 用 LN
以 10 為底對數LOG10(10)LOG(10,10) FROM DUALOracle LOG(base, val)
平方SQUARE(4)POWER(4,2) FROM DUAL
平方根SQRT(4)SQRT(4) FROM DUAL
任意冪POWER(3,4)POWER(3,4) FROM DUAL
隨機數RAND()DBMS_RANDOM.VALUE(0,1) FROM DUALOracle 需套件
符號SIGN(-8)SIGN(-8) FROM DUAL

字串函數(續)

功能SQL ServerOracle
字串長度LEN(str)LENGTH(str) / LENGTHB(str) (bytes)
子字串SUBSTRING(str, start, len)SUBSTR(str, start, len)
字串連接str1 + str2 或 CONCAT(str1,str2)str1 || str2 或 CONCAT(str1,str2)
大小寫轉換UPPER/LOWERUPPER/LOWER、INITCAP (首字大寫)
去除空白LTRIM/RTRIMLTRIM/RTRIM/TRIM
替換REPLACE(str, old, new)REPLACE(str, old, new)
位置搜尋CHARINDEX(sub, str)INSTR(str, sub)
左/右擷取LEFT/RIGHT(str, n)SUBSTR(str, 1, n) / SUBSTR(str, -n)

日期時間函數

功能SQL ServerOracle
目前日期時間GETDATE()SYSDATE / SYSTIMESTAMP
日期加減DATEADD(day, 7, GETDATE())SYSDATE + 7 / ADD_MONTHS(SYSDATE, 1)
日期差DATEDIFF(day, d1, d2)d2 - d1 (結果為天數)
日期截取DATEPART(month, d)EXTRACT(MONTH FROM d) / TO_CHAR(d, 'MM')
字串轉日期CONVERT(DATETIME, '2024-01-01', 120)TO_DATE('2024-01-01', 'YYYY-MM-DD')
日期轉字串CONVERT(VARCHAR, d, 120)TO_CHAR(d, 'YYYY-MM-DD HH24:MI:SS')

轉換/條件函數

功能SQL ServerOracle
型別轉換CAST(expr AS type) / CONVERT(type, expr)CAST(expr AS type) / TO_CHAR/TO_NUMBER/TO_DATE
空值處理ISNULL(expr, val) / COALESCE(...)NVL(expr, val) / COALESCE(...)
條件判斷CASE WHEN ... THEN ... ELSE ... ENDCASE WHEN ... THEN ... ELSE ... END / DECODE(expr, v1, r1, v2, r2, ...)

分析/視窗函數(兩者均支援 ANSI SQL:2003)

ROW_NUMBER() OVER (PARTITION BY dept ORDER BY sal DESC)
RANK() / DENSE_RANK()
LAG(col, 1) / LEAD(col, 1)
SUM(col) OVER (PARTITION BY dept ORDER BY dt ROWS BETWEEN 6 PRECEDING AND CURRENT ROW)

語法幾乎相同,Oracle 12c+ 新增 MATCH_RECOGNIZE 模式識別,SQL Server 2022+ 新增 WINDOW 子句簡化定義。

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