当前位置: 首页 > news >正文

SQL Server 与 Oracle 常用函数对照表

一、字符串处理函数
SQL Server 函数SQL Server 实例Oracle 函数Oracle 实例输出结果
CONCATSELECT CONCAT('A', 'B', 'C');CONCATSELECT CONCAT('A', 'B') FROM DUAL;ABC(SQL)
AB(Oracle)
SUBSTRINGSELECT SUBSTRING('Hello', 2, 3);SUBSTRSELECT SUBSTR('Hello', 2, 3) FROM DUAL;ell
CHARINDEXSELECT CHARINDEX('@', 'user@test.com');INSTRSELECT INSTR('user@test.com', '@') FROM DUAL;5
REPLACESELECT REPLACE('2023-01', '-', '/');REPLACESELECT REPLACE('2023-01', '-', '/') FROM DUAL;2023/01
LENSELECT LEN('SQL Server');LENGTHSELECT LENGTH('Oracle') FROM DUAL;10(SQL)
6(Oracle)

二、数值计算函数
SQL Server 函数SQL Server 实例Oracle 函数Oracle 实例输出结果
ROUNDSELECT ROUND(123.4567, 2);ROUNDSELECT ROUND(123.4567, 2) FROM DUAL;123.4600(SQL)
123.46(Oracle)
CEILINGSELECT CEILING(3.2);CEILSELECT CEIL(3.2) FROM DUAL;4
FLOORSELECT FLOOR(3.8);FLOORSELECT FLOOR(3.8) FROM DUAL;3
ABSSELECT ABS(-15.5);ABSSELECT ABS(-15.5) FROM DUAL;15.5
RANDSELECT RAND();DBMS_RANDOM.VALUESELECT DBMS_RANDOM.VALUE(0,1) FROM DUAL;0.7634(示例)

三、日期与时间函数
SQL Server 函数SQL Server 实例Oracle 函数Oracle 实例输出结果
GETDATE()SELECT GETDATE();SYSDATESELECT SYSDATE FROM DUAL;2025-05-17 14:30:45
DATEADDSELECT DATEADD(MONTH, 3, '2025-05-17');ADD_MONTHSSELECT ADD_MONTHS(SYSDATE, 3) FROM DUAL;2025-08-17
DATEDIFFSELECT DATEDIFF(DAY, '2025-01-01', '2025-05-17');日期直接相减SELECT (SYSDATE - TO_DATE('2025-01-01','YYYY-MM-DD')) FROM DUAL;136(天数差)
FORMATSELECT FORMAT(GETDATE(), 'yyyy-MM-dd');TO_CHARSELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD') FROM DUAL;2025-05-17

四、逻辑与条件函数
SQL Server 函数SQL Server 实例Oracle 函数Oracle 实例输出结果
ISNULLSELECT ISNULL(NULL, 'Default');NVLSELECT NVL(NULL, 'Default') FROM DUAL;Default
COALESCESELECT COALESCE(NULL, NULL, 'Value');COALESCESELECT COALESCE(NULL, NULL, 'Value') FROM DUAL;Value
CASESELECT CASE WHEN 10 > 5 THEN 'Yes' ELSE 'No' END;CASESELECT CASE WHEN 10 > 5 THEN 'Yes' ELSE 'No' END FROM DUAL;Yes
IIFSELECT IIF(10 > 5, 'True', 'False');DECODESELECT DECODE(10, 5, 'False', 'True') FROM DUAL;True

五、聚合与窗口函数
SQL Server 函数SQL Server 实例Oracle 函数Oracle 实例输出结果
SUMSELECT SUM(Sales) FROM Orders;SUMSELECT SUM(Sales) FROM Orders;15000.00(示例)
ROW_NUMBERSELECT ROW_NUMBER() OVER (ORDER BY Sales DESC);ROW_NUMBERSELECT ROW_NUMBER() OVER (ORDER BY Sales DESC) FROM Orders;生成行号序列
STRING_AGGSELECT STRING_AGG(Name, ',') FROM Employees;LISTAGGSELECT LISTAGG(Name, ',') WITHIN GROUP (ORDER BY Name) FROM Employees;Alice,Bob,Charlie

注意事项

  1. 语法差异

    • SQL Server 使用 SUBSTRING,Oracle 使用 SUBSTR(参数顺序一致)。

    • Oracle 的 CONCAT 仅支持两个参数,需嵌套调用拼接多个值(如 CONCAT(CONCAT('A', 'B'), 'C'))。

  2. 日期处理灵活性

    • Oracle 允许直接对日期进行加减运算(如 SYSDATE + 1 表示加一天),而 SQL Server 需使用 DATEADD

  3. 空值处理

    • SQL Server 的 ISNULL 对应 Oracle 的 NVL,但 COALESCE 在两者中行为一致。

  4. 版本兼容性

    • SQL Server 的 STRING_AGG 需 2017+ 版本,Oracle 的 LISTAGG 需 11g R2+ 版本。

相关文章:

  • LeetCode 153. 寻找旋转排序数组中的最小值:二分查找法详解及高频疑问解析
  • 一场关于BOM物料清单的深度对话
  • Python训练营打卡Day28
  • 寻找树的中心(重心)
  • 湖北理元理律师事务所:科学债务管理模型构建实录
  • 【JDBC】JDBC常见错误处理方法及驱动的加载
  • C语言:在 Win 10 上,g++ 如何编译 gtk 应用程序
  • linux网络内核的核心函数作用和简介
  • 手写tomcat:基本功能实现(3)
  • Java IO流进阶实战详解(含文件读写、拷贝、加密、字符集)
  • R语言空间数据处理入门教程
  • BC 范式与 4NF
  • AI日报 - 2024年5月17日
  • 【React中虚拟DOM与Diff算法详解】
  • 日期数据渲染转换问题
  • Animaster:一次由 CodeBuddy 主导的 CSS 动画编辑器诞生记
  • C++高级应用(1)-类型擦除(Type Erasure)和模板特化(Template Specialization)详解
  • aksharetools:大模型智能体框架agno可直接获取A股金融数据
  • [Mac] 开发环境部署工具ServBay 1.12.2
  • React Hooks 必须在组件最顶层调用的原因解析
  • 上海:到2027年,实现近海航线及重点海域5G网络高质量覆盖
  • 受贿1.29亿余元,黑龙江省原副省长王一新被判无期
  • 马上评|训斥打骂女儿致死,无暴力应是“管教”底线
  • 人民日报整版聚焦:外贸产品拓内销提速增量,多地加快推动内外贸一体化
  • 美F-35险被胡塞武装击中,损失增大让行动成“烂尾仗”
  • 因港而兴,“长江黄金水道”上的宜宾故事