SQL作为结构化查询语言的核心组成部分,其函数体系是实现数据操作、计算和转换的关键工具。从基础的字符串处理到复杂的窗口分析,SQL函数覆盖了数据处理的全生命周期。这些函数不仅简化了复杂逻辑的编码实现,还通过标准化接口提升了跨平台兼容性。例如,字符串函数可统一处理多语言文本,日期函数能适配不同历法系统,而聚合与窗口函数则为数据分析提供多维度支持。值得注意的是,不同数据库平台(如MySQL、Oracle、SQL Server)对部分函数的实现存在细微差异,开发者需结合具体场景选择适配方案。

S	QL常用函数

一、字符串处理函数

字符串函数用于文本数据清洗、拼接和模式匹配,是ETL流程中的高频工具。

函数类别典型函数功能描述示例
拼接类CONCAT/CONCAT_WS合并多个字符串,支持自定义分隔符CONCAT('a','b') → 'ab'
截取类SUBSTRING/SUBSTR提取子串,支持起始位置和长度参数SUBSTRING('abcd',2,2) → 'bc'
替换类REPLACE替换指定字符片段REPLACE('a#b','#','c') → 'acb'

二、数值计算函数

数值函数实现数学运算标准化,避免手动编写复杂公式。

函数类型代表函数适用场景精度控制
四舍五入ROUND(value,n)保留小数点后n位ROUND(3.1415,2) → 3.14
向上取整CEIL/CEILING获取不小于值的最小整数CEIL(3.1) → 4
随机数RAND()生成0-1均匀分布随机数RAND() → 0.678

三、日期时间函数

时间函数处理时空维度数据,需注意时区转换和格式标准化。

  • 当前时间获取:NOW()返回系统当前时间戳,CURRENT_DATE仅获取日期部分
  • 时间差计算:DATEDIFF(end,start)计算天数差,TIMESTAMPDIFF支持多粒度单位
  • 格式转换:DATE_FORMAT按指定模板格式化日期,TO_DATE将字符串转为日期类型

示例:DATE_ADD('2023-01-01',INTERVAL 30 DAY) → '2023-01-31'

四、聚合函数与分组操作

聚合函数实现数据压缩统计,常与GROUP BY配合使用。

函数名称计算逻辑空值处理典型应用
SUM()求和(忽略NULL)NULL值视为0统计订单总额
AVG()平均值(自动过滤NULL)NULL不参与计算计算班级平均分
COUNT(expr)统计非空记录数expr为NULL则不计数统计有效订单量

五、窗口函数与分析函数

窗口函数突破聚合限制,支持行间计算和分组内排名。

函数类型排序规则并列处理示例场景
RANK()严格排序(1,2,4)允许跳跃编号比赛排名(无并列)
DENSE_RANK()连续排序(1,2,3)消除跳跃编号积分排行榜
ROW_NUMBER()唯一序号(1,2,3)强制区分记录数据分页处理

六、逻辑判断函数

条件函数实现业务规则编码,替代复杂存储过程。

  • CASE表达式:类似编程语言switch-case结构,支持多条件分支
  • IIF函数:简化版条件判断,仅处理二元逻辑(MySQL特有)
  • COALESCE:依次返回首个非空值,处理数据缺失问题

示例:CASE WHEN score > 90 THEN 'A' ELSE 'B' END

七、类型转换函数

显式转换保障数据一致性,避免隐式转换错误。

转换方向函数列表使用注意
字符→数值CAST(str AS UNSIGNED)失败会返回0而非报错
数值→字符CONVERT(num,CHAR)需指定字符集(如UTF-8)
日期→字符串DATE_FORMAT(date,'%Y-%m')格式化模板需严格匹配

元数据函数获取数据库对象信息,支撑动态SQL构建。

SQL函数体系通过标准化接口实现了跨平台的数据操作能力。从基础的字符串拼接到复杂的窗口分析,各类函数构成了数据处理的核心工具链。实际应用中需注意三点原则:首先,优先使用标准SQL函数保障可移植性;其次,针对特定数据库的扩展函数需评估绑定成本;最后,复杂计算应通过函数组合而非嵌套实现。未来随着机器学习集成需求的增加,SQL函数库将持续扩展实时分析、模式识别等新功能模块。