在Oracle数据库中,函数是用于处理数据和执行特定操作的重要工具。它们可以用于查询、数据转换、计算以及控制流程等。Oracle提供了丰富的内置函数,涵盖了字符串、数字、日期、转换、聚合等多种类型。以下是对Oracle常用函数的总结,并以表格形式进行分类展示。 一、字符串函数 | 函数名 | 功能说明 | 示例 | | `UPPER` | 将字符串转换为大写 | `UPPER('hello')` → `'HELLO'` | | `LOWER` | 将字符串转换为小写 | `LOWER('HELLO')` → `'hello'` | | `SUBSTR` | 提取字符串的一部分 | `SUBSTR('hello world', 7, 5)` → `'world'` | | `INSTR` | 查找子字符串的位置 | `INSTR('hello world', 'o')` → `5` | | `CONCAT` | 连接两个字符串 | `CONCAT('hello', ' world')` → `'hello world'` | | `TRIM` | 删除字符串两端的空格或指定字符 | `TRIM('hello')` → `'hello'` | | `REPLACE` | 替换字符串中的部分字符 | `REPLACE('hello world', 'world', 'Oracle')` → `'hello Oracle'` |
二、数字函数 | 函数名 | 功能说明 | 示例 | | `ROUND` | 四舍五入 | `ROUND(3.1415, 2)` → `3.14` | | `FLOOR` | 向下取整 | `FLOOR(3.9)` → `3` | | `CEIL` | 向上取整 | `CEIL(3.1)` → `4` | | `ABS` | 返回绝对值 | `ABS(-10)` → `10` | | `MOD` | 取模运算 | `MOD(10, 3)` → `1` | | `POWER` | 幂运算 | `POWER(2, 3)` → `8` | | `SIGN` | 判断数值的正负 | `SIGN(-5)` → `-1` |
三、日期函数 | 函数名 | 功能说明 | 示例 | | `SYSDATE` | 获取当前系统日期和时间 | `SYSDATE` → `2025-04-05 14:30:00` | | `ADD_MONTHS` | 在日期上加几个月 | `ADD_MONTHS(SYSDATE, 1)` → 下个月的同一天 | | `NEXT_DAY` | 获取下一个指定星期几的日期 | `NEXT_DAY(SYSDATE, 'MONDAY')` | | `LAST_DAY` | 获取某月的最后一天 | `LAST_DAY(SYSDATE)` | | `MONTHS_BETWEEN` | 计算两个日期之间的月份差 | `MONTHS_BETWEEN('2025-04-05', '2025-01-01')` → `3` | | `TO_DATE` | 将字符串转换为日期 | `TO_DATE('2025-04-05', 'YYYY-MM-DD')` | | `TO_CHAR` | 将日期转换为字符串 | `TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS')` |
四、转换函数 | 函数名 | 功能说明 | 示例 | | `TO_NUMBER` | 将字符串转换为数字 | `TO_NUMBER('123')` → `123` | | `TO_CHAR` | 将数字或日期转换为字符串 | `TO_CHAR(123.45)` → `'123.45'` | | `TO_DATE` | 将字符串转换为日期 | `TO_DATE('2025-04-05', 'YYYY-MM-DD')` | | `NVL` | 如果表达式为NULL则返回默认值 | `NVL(NULL, 'default')` → `'default'` | | `COALESCE` | 返回第一个非NULL的表达式 | `COALESCE(NULL, NULL, 'third')` → `'third'` | | `DECODE` | 类似于条件判断 | `DECODE(1, 1, 'one', 2, 'two', 'other')` → `'one'` |
五、聚合函数 | 函数名 | 功能说明 | 示例 | | `SUM` | 求和 | `SUM(salary)` | | `AVG` | 求平均值 | `AVG(salary)` | | `MAX` | 求最大值 | `MAX(salary)` | | `MIN` | 求最小值 | `MIN(salary)` | | `COUNT` | 计数 | `COUNT()` | | `GROUP_CONCAT`(或`LISTAGG`) | 将多行结果合并成一个字符串 | `LISTAGG(name, ', ') WITHIN GROUP (ORDER BY name)` |
六、其他常用函数 | 函数名 | 功能说明 | 示例 | | `CASE` | 条件判断语句 | `CASE WHEN salary > 1000 THEN 'High' ELSE 'Low' END` | | `NULLIF` | 如果两个表达式相等则返回NULL | `NULLIF(10, 10)` → `NULL` | | `RANK` | 排名函数 | `RANK() OVER (ORDER BY salary DESC)` | | `DENSE_RANK` | 密集排名函数 | `DENSE_RANK() OVER (ORDER BY salary DESC)` | | `ROW_NUMBER` | 行号函数 | `ROW_NUMBER() OVER (ORDER BY salary DESC)` |
总结 Oracle数据库提供了种类繁多的函数,帮助用户更高效地处理数据。从字符串到数字、从日期到转换、再到聚合与条件判断,这些函数在日常开发和数据处理中起到了至关重要的作用。掌握这些函数不仅有助于提高SQL查询效率,还能增强对数据库操作的理解与灵活性。建议在实际应用中结合具体场景选择合适的函数,以达到最佳效果。 |