(课堂笔记)Oracle 常用函数:数值、字符串、日期处理
本文系统总结了Oracle常用函数分为数值、字符串和日期处理三大类。数值函数包括ABS、POWER、ROUND等字符串函数涵盖REPLACE、SUBSTR、INSTR等日期函数包含LAST_DAY、ADD_MONTHS等。文中提供了典型示例和实用技巧如统计字符出现次数、模糊查询替代方案等。最后通过综合练习演示了函数组合应用并给出了最佳实践建议如日期运算优先使用MONTHS_BETWEEN、字符串拼接推荐使用||等。这些函数为Oracle数据库操作提供了强大的数据处理能力。课堂笔记根据你提供的课堂笔记内容以下是对Oracle 常用函数的系统总结与梳理分为数值处理、字符串处理、日期处理三大类并附有典型示例和练习思路。一、数值函数针对 NUMBER 类型函数说明示例ABS(x)绝对值SELECT ABS(-3.4) FROM DUAL;POWER(x, y)x 的 y 次幂SELECT POWER(4,2) FROM DUAL;ROUND(x, y)四舍五入保留 y 位小数SELECT ROUND(-3.4567,2) FROM DUAL;FLOOR(x)向下取整SELECT FLOOR(-3.567) FROM DUAL;CEIL(x)向上取整SELECT CEIL(3.14) FROM DUAL;TRUNC(x, y)截断不四舍五入SELECT TRUNC(3.567,2) FROM DUAL;MOD(x, y)取余数SELECT MOD(7,3) FROM DUAL;✅ 注意TRUNC不进行四舍五入直接舍弃多余小数位。二、字符串函数针对 VARCHAR2 类型函数说明示例REPLACE(str, old, new)替换子串SELECT REPLACE(ABBCCDD,B,*) FROM DUAL;LENGTH(str)字符串长度SELECT LENGTH(中国) FROM DUAL;SUBSTR(str, m, n)从 m 位开始截取 n 位SELECT SUBSTR(ABCDEFG,2,3) FROM DUAL;INSTR(str, sub, m, n)查找子串位置SELECT INSTR(ABBDSDSKKD,D,5,2) FROM DUAL;TRIM(str)去除左右空格SELECT TRIM( A B C D ) FROM DUAL;CONCAT(x, y)拼接字符串SELECT CONCAT(Hello, World) FROM DUAL;LPAD(str, len, pad)左填充SELECT LPAD(8888,8,*) FROM DUAL;RPAD(str, len, pad)右填充SELECT RPAD(8888,8,*) FROM DUAL;常用技巧统计某字符出现次数LENGTH(str) - LENGTH(REPLACE(str, 目标字符))模糊查询替代方案WHERE INSTR(ename, K) 0等价于LIKE %K%字符串统一格式处理结合SUBSTRINSTRLPAD三、日期函数针对 DATE 类型函数说明示例LAST_DAY(date)当月最后一天SELECT LAST_DAY(SYSDATE) FROM DUAL;ADD_MONTHS(date, n)增加 n 个月SELECT ADD_MONTHS(SYSDATE, -2) FROM DUAL;MONTHS_BETWEEN(d1, d2)月数差小数SELECT MONTHS_BETWEEN(...) FROM DUAL;TRUNC(date, 格式)截断到指定精度TRUNC(SYSDATE,MM)→ 当月第一天date ± n推后/提前 n 天SELECT SYSDATE 10 FROM DUAL;date1 - date2相差天数SELECT SYSDATE - HIREDATE FROM EMP;常用日期截断格式YYYY→ 当年第一天2026-01-01MM→ 当月第一天2026-04-01Q→ 当季第一天2026-04-01DD→ 当天不变典型计算入职月数向下取整FLOOR(MONTHS_BETWEEN(SYSDATE, HIREDATE))入职年数FLOOR(MONTHS_BETWEEN(...) / 12)上季度最后一天TRUNC(SYSDATE,Q) - 1四、综合练习与典型思路✅ 练习 1统计字符串中 K 的个数sqlSELECT LENGTH(HBJBDKWWJJJK34K224HKN) - LENGTH(REPLACE(HBJBDKWWJJJK34K224HKN,K)) AS CNT FROM DUAL;✅ 练习 2姓名打码首尾保留sqlSELECT SUBSTR(ENAME,1,1) || LPAD(*, LENGTH(ENAME)-2, *) || SUBSTR(ENAME,-1) AS NEW_ENAME FROM EMP;✅ 练习 3截至当月第一天员工已领月薪月数sqlSELECT FLOOR(MONTHS_BETWEEN(TRUNC(SYSDATE,MM), HIREDATE)) AS 月数 FROM EMP;✅ 练习 4计算机1970-01-01至上季度最后一天的月数sqlSELECT FLOOR(MONTHS_BETWEEN(TRUNC(SYSDATE,Q)-1, TO_DATE(1970-01-01,YYYY-MM-DD))) AS 月份数 FROM DUAL;五、注意事项 最佳实践日期运算优先使用MONTHS_BETWEEN避免手动处理天数/闰年。字符串拼接推荐使用||比CONCAT更灵活。去空格TRIM只去两端如需去全部空格用REPLACE(str, , )。日期截断常用于统计“月初”、“季初”等固定时间点。Oracle 中 DUAL是系统虚拟表用于测试函数或常量查询。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2554210.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!