Oracle常用函数
字符串函数
NO |
函数名称 |
描述 |
1 | 字符串 UPPER(列 | 字符串) | 将传入的字符串变为大写字母形式 |
2 | 字符串 LOWER(列 | 字符串) | 将传入的字符串变为小写字母形式 |
3 | 字符串 INITCAP(列 | 字符串) | 开头首字母大写,其他小写 |
4 | 字符串 LENGTH(列 | 字符串) | 取得指定字符串的长度 |
5 | 字符串 SUBSTR(列 | 字符串,开始索引,[长度]) | 进行字符串的截取,如果没有指定长度则从开始索引一直截取到结尾 |
6 | 字符串 REPLACE(列|字符串,旧内容,新内容) | 将指定字符串的数据以新数据替换旧数据 |
SUBSTR函数注意:Oracle中的索引从1开始,就算输入的是0,程序也会按照1的方式进行处理
查询所有员工名字的的后三位: SELECT ename,SUBSTR(ename,LENGTH(ename)-2) FROM emp;
SUBSTR函数也能设置负数,例如: SELECT ename,SUBSTR(ename,-3) FROM emp;也能查询员工名字的后三位,此类设置方式只有Oracle数据库才有
数值函数
NO | 函数名称 | 描述 |
1 | 数字 ROUND(列 | 数字 [,小数位]) | 实现数据的四舍五入,可以设置保留的小数位 |
2 | 数字 TRUNC(列 | 数字[,小数位]) | 实现数据的截取,即不进位 |
3 | 数字 MOD (列 | 数字,列 | 数字) | 求模(计算余数) |
ROUND函数:如果没有设置小数点的保留位数,那么会直接不保留小数直接进位。
可以设置为负数,如果设置为负数,那么就表示进行整数位的进位处理,四舍五入
TRUNC函数:和ROUND函数的的实用形式上差别不大,唯一的区别在于TRUNC不会四舍五入,他是直接抹除
日期函数
想要处理一个日期,就要知道当前的日期是什么,Oracle专门提供了一个伪列:
SYSDATE、 SYSTIMESTAMP
日期的操作公式
- 日期 + 数字 = 日期(表示若干天之后的日期)
- 日期 – 数字 = 日期(表示若干天之前的日期)
- 日期 – 日期 = 数字(天数)
对于日期而言,由于每月天数不同, 如果直接使用天数来实现年或月的计算,那么结果一定是不准确的
所以为了准确的进行日期操作,在Oracle里提供有四个日期处理函数
NO | 函数名称 | 描述 |
1 | 日期ADD_MONTHS(列 | 日期,月数) | 在指定的日期上增加若干个月之后的日期 |
2 | 数字 MONTHS_BETWEEN(列 | 日期,列 | 日期) | 返回两个日期之间的所经历的月数 |
3 | 日期 LAST_DAY(列 | 日期) | 取得指定日期所在月的最后一天 |
4 | 日期 NEXT_DAY(列 | 日期,星期X) | 返回下一个指定的一周时间数对应的日期 |
ADD_MONTHS函数:在进行月数增加的时候是不会限制数据的大小的
转换函数
NO | 函数名称 | 描述 |
1 | 字符串 TO_CHAR(列 | 日期 | 数字,转换格式) | 将日期或数字格式化为指定格式的字符串 |
2 | 日期 TO_DATE(列 | 字符串, 转换格式) | 按照指定的转换格式编写字符串后将其变为日期型数据 |
3 | 数字TO_NUMBER(列 | 字符串) | 将字符串变为数字 |
TO_CHAR()函数:
如果想要将一个日期或数字变为字符串,那么首先必须清楚转换格式
日期:年(yyyy)月(mm)日(dd)
时间:时(hh、hh24)分 (mi) 秒 (ss)
数字:任意数字(9)、本地货币符号(L)
使用TO_CHAR函数有一个强悍的功能,就是可以实现日期数据的拆分
例如:拆分出现在时间的年月日
SELECT TO_CHAR(SYSDATA,’yyyy’), TO_CHAR(SYSDATA,’mm), TO_CHAR(SYSDATA,’dd) FROM dual;
通用函数
NO | 函数名称 | 描述 |
1 | 数字 NVL(列 | NULL默认值) | 如果传入的内容是NULL,则使用默认数值处理,如果不是空则用原始数值处理 |
2 | 数据类型 DECODE(列 | 字符串 | 数值,比较内容1,显示内容1,比较内容2,显示内容2…[,默认显示内容]) | 设置的内容会与每一个比较内容进行比较,如果内容相同,则会使用显示内容践行进行输出。如果都不相同,则使用默认内容 |