单行函数
字符串函数
- 字符串 UPPER(列|字符串) :将传入发字符串变成大写字母形式
- 字符串 LOWER(列|字符串) :将传入发字符串变成小写字母形式
- 字符串 INITCAP(列|字符串) :开头首字母大写,其他都是小写
- 数字 LENGTH(列|字符串) :取得指定字符串的长度
- 字符串 SUBSTR(开始索引,[长度]) :获得字符串的截取,从开始索引位置开始,如果没有长度,代表截取后面的全部内容
- 字符串 REPLACE(列|字符串,旧内容,新内容) :将指定字符串的旧内容换成新内容
例子:
1. 大写:select upper('hello') from dual;(这是虚拟表)
2. 小写:select lower(ename) from emp;
3. 首字母大写:select INITCAP(ename) from emp;
4. 取得字符串长度:select length('heloworld') from dual;
5. 字符串截取:
从前向后截取
select substr('helloworld',6) from dual;
select substr('helloworld',0,5) from dual;
oracle 中,下标从1开始,如果给的是0,也会从1开始
从后向前截取
select substr('helloworld',length('hello world')-3) from dual;
select substr('helloworld',-3,3) from dual;
数值函数
- 数字 ROUND(列|数字[,小数为]):实现四舍五入可以设置保留小数位
- 数字 TRUNC(列|数字[,小数为]):实现数据的截取,不进位
- 数字 MOD(列|数字,列|数字):求模,计算余数
例子:
1. round函数
小数位是正数,对小数位进行四舍五入
select round(789.56754,2) from dual;//789.57
小数位是负数,对整数位进行四舍五入
select round(789.56754,-2) from dual;//800
2. trunc函数,不会进位
select trunc(789.56754) from dual;//789
select trunc(789.56754,2) from dual;//789.56
select trunc(789.56754,-2) from dual;//700
3. mod函数
select mod(10,3) from dual;//1
日期函数
select sysdate from dual;查找当前时间
select systimestamp from dual;查找时间戳
概念:
- 日期 + 数字 = 日期(若干天之后的日期)
- 日期 - 数字 = 日期(若干天之前的日期)
- 日期 - 日期 = 日期(天数)
范例:
select sysdate-hiredate from emp;
select sysdate-7 ,sysdate+240 from dual;
函数:
- 日期 ADD_MONTHS(列|日期,月数):在指定日期之后增加若干月之后的日期
- 数字 MONTHS_BETWEEN(列|日期,列|日期):返回两个日期之间的所经历的月数
- 日期 LAST_DAY(列|日期):取得指定日期所在月的最后一天
- 日期 NEXT_DAY(列|日期,‘星期X’):查找下一个星期X是几号(如:select next_day(sysdate,‘星期二’) from dual;)
转换函数
- 字符串 TO_CHAR(列|日期|数字,转换格式):将日期或数字 格式化为指定的字符串
- 日期 TO_DATE(列|字符串,转换格式):按照指定的转换格式编写字符串后将其变为日期型数据
- 数字 TO_NUMBER(列|字符串):将字符串变为数字
例子:
- TO_CHAR()
- 日期:年(yyyy)、月(mm)、日(dd)
- 时间:时(hh,hh24)、分(mi)、秒(ss)
- 数字:任意数字(9)、本地货币符号(L)
日期:select to_char(sysdate,'yyyy-mm-dd') from dual;
时间:select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;
select to_char(sysdate,'mm') from dual;
数字:select to_char(545464646,'L999,999,999,999') from dual;//结果¥545,464,646
- TO_DATE()
SELECT TO_DATE('1989-10-15','yyyy-mm-dd') from dual;//将字符串转换成日期,结果:15-10月-89
- TO_NUMBER()//不用也可以,默认转换机制可以完成
select to_number('1')+to_number('2') from dual;将1和2 由字符串转换成数字,进行计算
通用函数
- 数字 NVL(列|NULL,默认值):如果传入的内容时空,则使用默认数值处理
- 数据类型 DECODE(列|字符串|数值,比较内容1,显示内容1…) :设置的内容会与每一个比较内容进行比较,如果相同,输出显示内容,如果都不同,则输出默认内容
- 处理null函数
select empno,ename,sal,comm, (sal+NVL(comm,0))*12 income from emp;
- decode(),类似于 if… else…
select ename.job,decode(job,'clerk','办事员'...'--');