Oracle的单行函数的类型、用途以及简单演示
单行函数
所谓单行函数指的是完成某一具体功能的操作,例如:转为大小写,仅开头大写,其余小写或者进行转换日期数字等等;
一般而言,单行函数的格式都是: “ 返回值 函数名称(参数)”。
以下内容写的相对啰嗦请见谅,如果只想知道各函数作用可仅看表格内容即可;
本人使用的Oracle版本是11g
- 单行函数按照类型分类一共可以分为以下几种:字符串函数、数字函数、日期函数、转换函数、通用函数
字符串函数
函数名称(名称前为返回值类型) | 描述 |
---|---|
字符串 UPPER(列 | 字符串) | 将传入的字符串变为大写字母形式 |
字符串 LOWER(列 | 字符串) | 将传入的字符串变为小写字母形式 |
字符串 INITCAP(列 | 字符串) | 开头首字母大写,其它字母全部变为小写 |
数字 LENGTH(列 | 字符串) | 取得指定字符串的长度 |
字符串 SUBSTR(列 | 字符串,开始索引,[长度]) | 对字符串的截取,如果不给出后面的长度,则会从开始索引的位置截取到最后 |
字符串 REPLACE(列 | 字符串,旧内容,新内容) | 将指定字符串的数据替换为新数据 |
-
范例UPPER()
- Oracle提供了一个叫dual的虚拟表供我们进行验证测试或者查询一些不需要查询表的操作。
SELECT UPPER('hello') FROM dual;
SQL语句指将dual虚拟表中hello变为大写形式
- 范例LOWER()
SELECT LOWER(ename) ,ename FROM emp;
SQL语句指将emp表中ename字段的记录变为小写形式
- 范例INITCAP()
SELECT ename, INITCAP(ename) FROM emp;
SQL语句指将emp表中ename字段的记录变为首字母大写其余小写形式
- 范例LENGTH()
SELECT * FROM emp WHERE LENGTH(ename)=5;
SQL语句指从emp表中得到所有字段ename长度为5的记录
- 范例SUBSTR()
不给定截取长度
SELECT SUBSTR('helloworld', 6) FROM dual;
SQL语句指将’helloworld‘字段从第六个字符开始截取(Oracle字符串索引从1开始,如果写为0也会按1进行处理)
给定截取长度
SELECT SUBSTR('helloworld', 6, 3) FROM dual;
SQL语句指将’helloworld‘字段从第六个字符开始截取,截取长度为3个字符
- 范例SUBSTR()取倒数,比如取后三位
SELECT ename, SUBSTR(ename, -3) FROM emp;
SQL语句指截取ename字段的记录的后三位;
----------------------------------------------------------------------------------------------------------
数值函数
函数名称 | 描述 |
---|---|
数字 ROUND(列 | 数字 [ , 小数位]) | 实现数据的四舍五入,可以设置保留小数位 |
数字 TRUNC(列 | 数字 [ , 小数位]) | 实现数据的截取,即不进位 |
数字 MOD(列 | 数字, 列| 数字 ) | 求模(计算余数) |
- 范例ROUND() 默认四舍五入不保留小数位
SELECT ROUND(789.54645654) FROM dual;
SELECT ROUND(789.54645654 , 2) FROM dual;
- 范例TRUNC()不进行四舍五入
SELECT TRUNC(54.899965),TRUNC(54.899965, 2), TRUNC(54.899965, -1) FROM dual;
- 范例MOD()
SELECT MOD(10, 3)FROM dual;
日期函数
如果要处理日期,那么必须有一个前提,必须知道当前日期,在ORACLE里专门提供了一个伪列“SYSDATE”(SYSTIMESTAMP 时间戳);
函数名称 | 描述 |
---|---|
日期 ADD_MONTHS(列| 日期, 月数) | 在指定的日期上增加若干个月后的日期 |
数字 MONTHS_BETWEEN(列| 日期,列|日期) | 返回两个日期之间的所经历的月数 |
日期 LAST_DAY(列|日期) | 取得指定日期所在月的最后一天 |
日期 NEXT_DAY(列|日期,星期x) | 返回下一个指定的一周时间数对应的日期 |
- 范例ADD_MONTHS()
SELECT ADD_MONTHS(SYSDATE,4),ADD_MONTHS(SYSDATE,20)FROM dual;
语句表示SYSDATE增加4个月后的日期,以及增加20个月后的日期
- 范例MONTHS_BETWEEN()
SELECT MONTHS_BETWEEN(SYSDATE, hiredate) months FROM emp;
较难综合使用:计算例子表emp中日期距离现在过了多少年,多少月,多少天) 可以自行斟酌一下SQL语句如何写,其余日期函数
转换函数
负责将数字型、字符型、日期型数据进行转换的函数
函数名称 | 描述 |
---|---|
字符串 TO_CHAR(列|日期|数字, 转换格式) | 将日期或数字转换为指定格式的字符串 |
日期 TO_DATE(列|字符串, 转换格式) | 将字符串转换为指定格式的日期 |
数字 TO_NUMBER(列|字符串) | 将字符串转换为数字 |
- 范例TO_CHAR()
SELECT TO_CHAR(SYSDATE, 'yyyy-mm-dd HH:MI:SS') FROM dual;
SELECT TO_CHAR(SYSDATE, 'yyyy-mm-dd HH24:MI:SS') FROM dual;
通用函数
通用函数一般指的是ORACLE特色函数,主要又两个通用函数。
函数名称 | 描述 |
---|---|
数字 NVL(列| NULL, 默认值) | 如果传入的内容是null,则使用默认数值处理,如果不是空则使用原始数值处理。 |
数据类型 DECODE(列|字符串|数值, 比较内容1,显示内容1,比较内容2, 显示内容2, …[, 默认显示内容]) | 设置的内容会与每一个比较内容进行比较,如果内容相同,则会使用显示内容进行输出,如果都不相同,则使用最后的默认信息输出。 |
- 范例NVL()
SELECT COMM, NVL(COMM, 0) FROM emp;
- 范例DECONDE()
SELECT ename,job,DECODE(job, 'CLERK', '办事员','SALESMAN','销售','PRESIDENT','总裁','默认显示内容') FROM emp;
可见,DECODE函数的用法就是将指定的列中与比较值进行比较,如果符合比较值就会显示对应比较值后面的显示值,如果没有符合比较值,就会显示默认值,如果不给出默认值就会显示为空;
以上是本人一些简单的认识,如果有纰漏,麻烦指出,不喜勿喷,谢谢