当前位置: 首页 > 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+ 版本。

http://www.xdnf.cn/news/495433.html

相关文章:

  • 二进制与十进制互转的方法
  • 使用Maven部署WebLogic应用
  • 信贷风控笔记6——风控常用指标(面试准备14)
  • MATLAB学习笔记(六):MATLAB数学建模
  • Uniapp、Flutter 和 React Native 全面对比
  • 分糖果--思维+while判断
  • 基于QT和FFmpeg实现自己的视频播放器FFMediaPlayer(一)——项目总览
  • 芯片生态链深度解析(二):基础设备篇——人类精密制造的“巅峰对决”
  • StarRocks MCP Server 开源发布:为 AI 应用提供强大分析中枢
  • gcc 源码目录文件夹功能简介
  • 从辅助到协作:GitHub Copilot的进化之路
  • 副业小程序YUERGS,从开发到变现
  • String的一些固定程序函数
  • 嵌入式学习笔记 - STM32 使用一个外部触发同时启动两个定时器
  • 谷歌浏览器(Google Chrome)136.0.7103.93便携增强版|Win中文|安装教程
  • 2.1.3
  • 【Linux网络】NAT和代理服务
  • AtCoder AT_abc406_c [ABC406C] ~
  • MySQL相关
  • 数据结构【AVL树】
  • vue2 切换主题色以及单页面好使方法
  • 自己手写tomcat项目
  • Redis INCR 命令详解
  • 学习笔记:黑马程序员JavaWeb开发教程(2025.4.6)
  • C++学习:六个月从基础到就业——C++11/14:列表初始化
  • Java 类和对象
  • 从紫光集团看基本财务分析
  • 构建集成差异化灵巧手和先进机器人控制技术的自动化系统
  • 每日算法刷题Day9 5.17:leetcode定长滑动窗口3道题,用时1h
  • 5000 字总结CSS 中的过渡、动画和变换详解