sql函数大全及举例(SQL函数示例详解)


SQL函数作为结构化查询语言的核心组件,其功能覆盖数据检索、计算、转换与分析等场景,是数据库开发与运维的基石。随着多平台数据库的广泛应用,SQL函数在语法细节、功能实现及性能表现上呈现显著差异。例如,Oracle的正则表达式函数与MySQL的兼容性处理,或SQL Server的窗口函数与PostgreSQL的扩展能力对比,均体现了不同系统对SQL标准的差异化解读。掌握SQL函数需兼顾通用性原则与平台特性,既要理解基础函数的逻辑(如聚合计算、字符串截取),也要熟悉特定平台的功能延伸(如JSON处理、并行计算)。本文将从八个维度系统梳理SQL函数体系,结合多平台实践案例与对比分析,揭示函数设计的内在逻辑与应用场景的适配关系,为开发者提供跨平台开发参考。
一、聚合函数
聚合函数用于对数据集进行汇总计算,支持分组统计与全局运算。
函数类别 | 函数名称 | 示例 | 说明 |
---|---|---|---|
聚合函数 | COUNT() | SELECT COUNT() FROM users; | 统计非空行数 |
聚合函数 | SUM() | SELECT SUM(price) FROM orders GROUP BY category; | 分组求和 |
聚合函数 | AVG() | SELECT AVG(score) FROM students WHERE class_id=1; | 计算平均值 |
不同平台对聚合函数的扩展能力差异显著。例如,SQL Server支持CHECKSUM_AGG进行哈希校验,而MySQL通过GROUP_CONCAT实现字符串聚合。Oracle的LISTAGG可自定义分隔符,但需配合WITH ROLLUP实现超纲总计。
二、字符串函数
字符串函数用于文本处理,包括截取、拼接、替换与格式化。
函数类别 | 函数名称 | 示例 | 说明 |
---|---|---|---|
字符串函数 | SUBSTRING() | SELECT SUBSTRING(name,1,3) FROM customers; | 截取前3字符 |
字符串函数 | CONCAT() | SELECT CONCAT(first_name,' ',last_name) FROM employees; | 拼接全名 |
字符串函数 | REPLACE() | SELECT REPLACE(phone,'-','') FROM contacts; | 移除短横线 |
多平台字符串函数存在语法差异:MySQL使用CONCAT_WS指定分隔符,Oracle依赖||操作符拼接,SQL Server则通过FOR XML PATH实现复杂字符串聚合。正则表达式支持方面,PostgreSQL的REGEXP_REPLACE与Oracle的REGEXP_SUBSTR功能相似,但语法结构迥异。
三、日期与时间函数
日期函数用于时间值计算、格式转换与间隔提取。
函数类别 | 函数名称 | 示例 | 说明 |
---|---|---|---|
日期函数 | DATEADD() | SELECT DATEADD(day,7,order_date) FROM orders; | 日期加7天 |
日期函数 | DATEDIFF() | SELECT DATEDIFF(NOW(),birthday) FROM users; | 计算年龄 |
日期函数 | EXTRACT() | SELECT EXTRACT(YEAR FROM hire_date) FROM employees; | 提取年份 |
日期处理是多平台差异的高发区。MySQL的DATE_FORMAT与Oracle的TO_CHAR均用于格式化,但参数顺序相反。SQL Server的DATEFROMPARTS可构造日期,而PostgreSQL通过MAKE_DATE实现类似功能。时间戳处理方面,Oracle的TIMESTAMP类型包含时区信息,MySQL需显式定义TIMESTAMP WITH TIME ZONE。
四、数学函数
数学函数提供数值计算、舍入与随机数生成能力。
函数类别 | 函数名称 | 示例 | 说明 |
---|---|---|---|
数学函数 | ROUND() | SELECT ROUND(price,2) FROM products; | 保留两位小数 |
数学函数 | ABS() | SELECT ABS(temperature) FROM sensors; | 取绝对值 |
数学函数 | MOD() | SELECT MOD(order_id,10) FROM orders; | 获取个位数 |
数值精度处理差异明显:SQL Server的CEILING与FLOOR函数在MySQL中需通过CEIL与FLOOR别名调用。随机数生成方面,Oracle的DBMS_RANDOM.VALUE返回0-1浮点数,MySQL的RAND()需配合FLOOR生成整数。PostgreSQL的CRC32与SQL Server的HASHBYTES提供校验值计算,但算法选择范围不同。
五、类型转换函数
类型转换函数用于数据类型显式转换与隐式兼容。
函数类别 | 函数名称 | 示例 | 说明 |
---|---|---|---|
转换函数 | CAST() | SELECT CAST(salary AS VARCHAR) FROM employees; | 数值转字符串 |
转换函数 | CONVERT() | SELECT CONVERT(datetime,order_ts) FROM transactions; | 字符串转日期 |
转换函数 | TRY_CAST() | SELECT TRY_CAST(raw_data AS INT) FROM logs; | 安全转换(SQL Server) |
类型转换规则体现平台特性:MySQL的CAST(column AS TYPE)语法在Oracle中需改为CAST(column AS DATATYPE)。SQL Server的TRY_PARSE与PostgreSQL的TRY_CAST提供错误容忍机制,而MySQL仅支持CAST强制转换。二进制与字符集转换方面,Oracle的UTL_RAW.CAST_TO_VARCHAR与MySQL的CONVERT(blob USING utf8)实现方式截然不同。
六、逻辑判断函数
逻辑函数用于条件判断、分支执行与布尔运算。
函数类别 | 函数名称 | 示例 | 说明 |
---|---|---|---|
逻辑函数 | IF() | SELECT IF(age>18,'Adult','Minor') FROM users; | 简单条件判断 |
逻辑函数 | CASE() | SELECT CASE WHEN status=1 THEN 'Open' ELSE 'Closed' END FROM tickets; | 多条件分支 |
逻辑函数 | COALESCE() | SELECT COALESCE(email,phone,'Unknown') FROM contacts; | 优先级填充空值 |
逻辑函数的扩展性差异显著:PostgreSQL支持NULLIF与GREATEST/LEAST系列函数,而MySQL仅通过IFNULL处理空值。Oracle的DECODE函数提供类CASE的简写语法,但无法嵌套多层逻辑。SQL Server的CHOOSE函数可基于索引返回值,但其他平台需通过数学计算模拟。
七、窗口函数
窗口函数支持分组内排名、累计计算与移动平均。
函数类别 | 函数名称 | 示例 | 说明 |
---|---|---|---|
窗口函数 | ROW_NUMBER() | SELECT ROW_NUMBER() OVER (PARTITION BY dept) FROM employees; | 部门内排序 |
窗口函数 | RANK() | SELECT RANK() OVER (ORDER BY salary DESC) FROM staff; | 全局薪资排名 |
窗口函数 | SUM() OVER() | SELECT name,amount,SUM(amount) OVER (ORDER BY date) FROM transactions; | 累计金额计算 |
窗口函数的语法兼容性差异突出:SQL Server与PostgreSQL全面支持PARTITION BY和ORDER BY子句,而MySQL 8.0+才引入基础支持。Oracle的DENSE_RANK与标准SQL的RANK行为不同,前者允许并列排名。帧(Frame)定义方面,SQL Server的RANGE BETWEEN与PostgreSQL的ROWS BETWEEN语法结构存在细微差别。
>
元数据函数用于获取数据库对象属性与运行时信息。
>>
相关文章
随着家庭宽带提速及智能设备普及,千兆WiFi6路由器已成为现代家庭网络核心设备。WiFi6(802.11ax)协议通过OFDMA、MU-MIMO等技术提升多设备传输效率,配合千兆网口可充分发挥光纤宽带性能。选择时需关注芯片方案、频段覆盖、M
2025-05-02 02:04:47
![]()
高阶函数作为函数式编程的核心概念,其解题能力直接体现了开发者对抽象思维和代码复用的理解深度。在实际开发中,高阶函数通过将操作逻辑与数据解耦,显著提升了代码的可维护性和扩展性。掌握高阶函数解题技巧需要从参数传递、作用域管理、函数组合等多个维度
2025-05-02 02:04:41
![]()
函数曲线作为数学与现实世界的桥梁,其美学价值跨越了抽象理论与具象应用的边界。从古希腊几何学中的完美圆周,到现代分形理论中的无限递归,函数曲线承载着人类对秩序、和谐与动态平衡的永恒追求。其美感不仅源于数学本身的对称性与简洁性,更在于能够精准描
2025-05-02 02:04:41
![]()
在移动互联网流量见顶的背景下,微信公众号作为私域流量的核心阵地,其粉丝增长策略已成为运营者的核心课题。公众微信加粉的本质是通过精准触达、价值输出和社交裂变,将潜在用户转化为持久关注者。这一过程需要兼顾短期爆发与长期留存,涉及内容优化、活动设
2025-05-02 02:04:36
![]()
在短视频创作领域,抖音电音类内容凭借其强烈的节奏感和视觉冲击力迅速占领流量高地。变声器作为电音创作的核心工具之一,不仅能够强化作品的娱乐属性,还能通过声音重塑突破真人音色限制,为电音舞蹈、剧情反转、虚拟人设等创作方向提供技术支持。当前抖音变
2025-05-02 02:04:33
![]()
在Linux操作系统中,软件卸载机制因发行版和包管理器的差异而呈现多样化特性。与传统Windows系统通过控制面板统一管理软件不同,Linux采用模块化设计,不同发行版(如Debian、Red Hat、Arch)使用专属包管理工具(如apt
2025-05-02 02:04:29
![]()
热门推荐
|
---|