oracle常用函数整理(Oracle函数汇总)


Oracle数据库作为企业级应用的核心组件,其内置函数体系是开发者提升SQL效率、优化数据处理流程的重要工具。通过梳理Oracle常用函数可发现,其设计覆盖了数据清洗、逻辑判断、格式转换、统计分析等全场景需求,且函数命名遵循严格的语义规范,例如TO_xxx系列用于类型转换,SYS_xxx系列获取系统信息。值得注意的是,Oracle函数兼具灵活性和严谨性:一方面支持正则表达式、自定义函数等高级特性,另一方面对参数类型、NULL值处理有明确规则。掌握这些函数不仅能减少PL/SQL代码量,更能实现复杂业务逻辑的声明式表达。本文将从八个维度系统整理Oracle常用函数,并通过对比分析揭示其核心差异。
一、字符串处理函数
字符串操作是数据库处理的高频需求,Oracle提供了一系列函数实现截取、定位、替换等操作:
函数名 | 功能描述 | 典型参数 | 返回值类型 |
---|---|---|---|
SUBSTR(str, start, [length]) | 截取子字符串 | 'OracleDB', 2, 4 → 'acle' | VARCHAR2 |
INSTR(str, substr) | 查找子串位置 | 'test_string', 'st' → 2 | NUMBER |
REPLACE(str, old, new) | 替换指定内容 | 'AAAA', 'A', 'B' → 'BBBB' | VARCHAR2 |
关键差异点:INSTR支持指定起始位置和出现次数(INSTR(str,substr,start,nth)),而SUBSTR的长度参数可选;REPLACE会替换所有匹配项,需注意性能消耗。
二、数值计算函数
数值处理类函数主要用于数据标准化、精度控制及四舍五入:
函数名 | 功能描述 | 特殊处理 | 适用场景 |
---|---|---|---|
CEIL(number) | 向上取整 | CEIL(3.2) → 4 | 统计分组边界 |
FLOOR(number) | 向下取整 | FLOOR(3.8) → 3 | 价格计算断尾 |
ROUND(number, [decimal]) | 四舍五入 | ROUND(3.456,2) → 3.46 | 财务精确控制 |
核心对比:CEIL/FLOOR直接舍弃小数部分,ROUND可控制保留位数;三者均接受NULL输入并返回NULL,需配合NVL处理空值。
三、日期时间函数
日期处理是Oracle的特色领域,其函数支持复杂的历法运算:
函数名 | 功能描述 | 格式要求 | 返回值类型 |
---|---|---|---|
SYSDATE | 当前系统日期时间 | 无参数 | DATE |
TO_DATE(str, format) | 字符串转日期 | '2023/01/01','YYYY/MM/DD' | DATE |
MONTHS_BETWEEN(d1, d2) | 计算月份差值 | DATE类型参数 | NUMBER |
应用场景:TO_DATE需严格匹配格式掩码(如'YYYY-MM-DD HH24:MI:SS'),ADD_MONTHS处理合同到期日计算,LAST_DAY用于月度周期统计。特别注意DATE类型存储包含时分秒信息。
四、类型转换函数
隐式转换可能导致性能问题,显式转换函数保障数据准确性:
- TO_CHAR(value, format):将任意类型转为字符串,支持数字格式化(如9999.99)、日期格式化(如'YYYY-MM-DD')
- TO_NUMBER(str, format):字符串转数字,需指定格式(如'9999.99')
- TO_DATE(str, format):字符串转日期,格式要求严格
格式对照表:
格式元素 | 含义示例 | 适用类型 |
---|---|---|
9 | 数字占位符(必须填充) | TO_NUMBER/TO_CHAR |
0 | 强制显示数字位 | TO_CHAR(number) |
. | 小数点占位符 | 浮点数格式化 |
五、聚合与窗口函数
数据分析类函数分为聚合统计和窗口运算两大体系:
函数分类 | 代表函数 | 作用范围 | 输出特性 |
---|---|---|---|
聚合函数 | SUM(), AVG(), COUNT() | GROUP BY分组 | 每组单一值 |
窗口函数 | ROW_NUMBER(), RANK() | OVER(ORDER BY) | 多行排序编号 |
报表函数 | NVL(), COALESCE() | 单行处理 | 空值替换 |
关键区别:聚合函数需配合GROUP BY使用,窗口函数通过OVER子句保持行粒度;RANK()与DENSE_RANK()在并列排名时处理方式不同。
六、正则表达式函数
Oracle的正则函数提供强大模式匹配能力:
- REGEXP_LIKE(str, pattern):判断字符串是否匹配正则,等价于LIKE的增强版(支持^, $, []等元字符)
- REGEXP_REPLACE(str, pattern, replacement):按正则替换内容,支持分组引用(1,2)
- REGEXP_INSTR(str, pattern):返回匹配项的位置,可指定第N个匹配(第4参数)
应用示例:提取手机号段可用REGEXP_SUBSTR(phone,'^d3'),验证邮箱用REGEXP_LIKE(email,'^[A-Za-z0-9._%+-]+[A-Za-z0-9.-]+.[A-Za-z]2,$')。
七、逻辑判断函数>
八、自定义函数开发>





