oracle单行函数
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
oracle单⾏函数
字符串函数
1、⼤⼩写转换函数:
· 转⼤写:字符串 UPPER(字符串 | 数据列);
· 转⼩写:字符串 LOWER(字符串 | 数据列)。
2、⾸字母⼤写,其余字母⼩写:字符串INITCAP(字符串 | 列)
3、取得字符串长度:数字 LENGTH(字符串 |
4、替换指定字符串的内容:字符串 REPLACE(字符串 | 列,要替换的内容,新的内容)
5、字符串截取操作:
· 由指定位置截取到结尾:字符串 SUBSTR(字符串 | 数据列,截取开始索引);
· 指定截取的开始和结束位置:字符串 SUBSTR(字符串 | 数据列,截取开始索引,截取结束索引);字符串的索引下标是从 1 开始的
SUBSTR()函数还可以设置为负数,表⽰由后的指定位置开始
6、去掉左右空格函数:字符串 TRIM(字符串 | 列)
7、截取年,⽉,⽇,时,分,秒。
extract (
{ year|month|day| hour | minute | second }
| { timezone_hour | timezone_minute }
| { timezone_region | timezone_abbr }
from { date_value | interval_value } )
数字函数
1、四舍五⼊函数:数字 ROUND(数字 | 列 [,保留⼩数位])
2、截取⼩数函数:数字 TRUNC(数字 | 列 [,保留⼩数位])
正数向后截取,负数向前截取
select trunc(sysdate, 'yy') from dual;--当年第⼀天
select trunc(sysdate, 'q') from dual;--当前时间所在的季度的第⼀天
select trunc(sysdate, 'mm') from dual;--当⽉第⼀天
select trunc(sysdate, 'd') from dual;--返回本周的第⼀天(周⽇为第⼀天)
3、求模:数字 MOD(数字 1 | 列 1,数字 2 | 列 2)
⽇期函数
当前的系统⽇期时间,伪列:SYSDATE、SYSTIMESTAMP。
· ⽇期 + 数字 = ⽇期,表⽰若⼲天之后的⽇期;
· ⽇期 – 数字 = ⽇期,表⽰若⼲天之前的⽇期;
· ⽇期 – ⽇期 = 数字,表⽰两个⽇期之间的间隔天数。
1、计算两个⽇期之间所经历的⽉数:数字 MONTHS_BETWEEN(⽇期 1 | 列 1,⽇期 2 | 列 2)
2、加上指定⽉之后的⽇期:⽇期 ADD_MONTHS(⽇期 | 列,⽉数)
思考题:要求计算出每⼀位雇员到今天为⽌雇佣的年限
A、例如:今天是 2014 年 08 ⽉ 12 ⽇,CLARK 的雇佣⽇期是:1981 年 06 ⽉ 09 ⽇
B、到今天 CLARK 已经在公司服务了:33 年、02 ⽉、03 天
SELECT ename,hiredate,
TRUNC(MONTHS_BETWEEN(SYSDATE,hiredate)/12) year ,
TRUNC(MOD(MONTHS_BETWEEN(SYSDATE,hiredate),12)) months ,
TRUNC(SYSDATE - ADD_MONTHS(hiredate,MONTHS_BETWEEN(SYSDATE,hiredate))) day
FROM emp ;
3、求出指定的下⼀个⼀周时间数的⽇期:⽇期 NEXT_DAY(⽇期 | 列,⼀周时间数)
4、求出指定⽇期所在⽉的最后⼀天⽇期:⽇期 LAST_DAY(⽇期 | 列)
转换函数
1、转字符串数据:字符串 TO_CHAR(数字 | ⽇期 | 列,转换格式)
在进⾏转换格式设置的时候要根据不同的数据类型进⾏格式标记的定义:
· ⽇期:年(yyyy)、⽉(mm)、⽇(dd)、时(HH、HH24)、分(mi)、秒(ss);
· 数字:⼀位任意数字(9)、本地货币(L)。
SELECT TO_CHAR(SYSDATE,'yyyy-mm-dd hh24:mi:ss') FROM dual ;
范例:拆分⽇期数据
SELECT TO_CHAR(SYSDATE,'yyyy') year ,
TO_CHAR(SYSDATE,'mm') months ,
TO_CHAR(SYSDATE,'dd') day
FROM dual ;
范例:格式化数字显⽰SELECT TOCHAR(234789234798,'L999,999,999,999,999') FROM dual
2、转⽇期数据:⽇期 TO_DATE(字符串,转换格式)
范例:将字符串变为⽇期
SELECT'1981-09-15',TO_DATE('1981-09-15','yyyy-mm-dd') FROM dual ;
但是在 Oracle 之中提供有⾃动的转换⽅式,如果字符串按照⽇期的格式编写,那么可以⾃动由字符串变为⽇期。
3、转数字类型:数字 TO_NUMBER(字符串,转换格式)
范例:将字符串变为数字
SELECT TO_NUMBER('1') + TO_NUMBER('2') FROM dual ;
SELECT'1'+'2'FROM dual ;
在 Oracle ⾥⾯这些⾃动的数据类型转换功能是⾮常⽅便的,包括⽇期和字符串、字符串和数字。
通⽤函数
1、处理 null 数据:数字 NVL(列 | 数据,默认值)
2、多数据判断:数据 DECODE(字段 | 数据,判断数据 1,显⽰数据 1,判断数据 2,显⽰数据 2,… [默认显⽰]) SELECT ename,job ,
DECODE(job,'CLERK','办事员','SALESMAN','销售','MANAGER','经理','ANALYST','分析员','PRESIDENT','总裁','未
处理')。