Oracle基础(六):Oracle 函数
2015-06-02 21:04
621 查看
一、概述
(一)分类
1、单行函数:
对每一行输入值进行计算,得到相应的计算结果,返回给用户。即每行作为一个输入参数,经过函数计算得到每行的计算结果。如lenth 。
2、多行函数:对多行输入值进行计算,得到多行对应的单个结果。如max、min 。
(二)单行函数
1、分类:字符函数、数字函数、日期函数、转换函数、系统函数
二、字符函数
(一)replace:替换
1、使用:
2、分析:只是改变显示,不会改变数据库存储
(二)instr:找指定字符串的索引
1、语法
instr(c1, c2, i, j)
c1:被搜索的字符串
c2:希望搜索的字符串
i:搜索开始的位置,默认是1
j:出现的位置,默认是1
2、使用
在字符串 oracle mothed 中搜索 ot。从第1 个位置找,第1 个出现的位置
(三)concat:连接 2个字符串
1、使用
2、说明:
作用于 || 功能一致。
(四)initcap:首字母大写,其他都小写
1、使用
(五)length:返回字符串的长度
1、使用
2、说明:
SELECT length('苏武') FROM DUAL ;--显示2
中文也算是1个空间长度
(六)lower:全小写;upper:全大写
1、用法
雇员名首字母小写,其他字母大写
(七)substr:截字符串
1、用法
(八)lpad(左) 和 rpad(右) 粘贴字符
1、用法
(九)Ltrim和Rtrim 删除左右的指定的字符(也可以去空格)
(十)trim:前后去
三、数字函数
(一)avg
1、用法:avg(all | distinct)
distinct 过滤会重复的
四、日期函数
(一)add_months:增加减去月份
(二)sysdate:系统时间
(三)next_day(date, 'day'):离给出日期date 最近的day(星期)
(四)last_day:返回日期的最后一天
(五)months_between(date1,date2 ):给出date1到date2 的月份
五、转换函数
(一)to_date
1、语法:
2、使用
1)场景:插入数据和日期比较
2)插入数据
3)比较日期(与 date 的用法类似)
(二)to_char
1、to_char(obj,patten):可以转换日期、字符串、number等
2、使用
1)转换时间:
2)转换number
(三)to_nuber:字符转换为数字
(四)bfilenane(dir, file):指定一个外部二进制文件(blob)
六、系统函数
1、当前的数据库实例
SELECT sys_context('userenv' , 'db_name') FROM DUAL
2、语言:
SELECT sys_context('userenv' , 'language') FROM DUAL
3、日期格式
SELECT sys_context('userenv' , 'nls_date_format') FROM DUAL
4、当前的方案
SELECT sys_context('userenv' , 'current_schema') FROM DUAL
七、其他
(一)decode:if语句
(二)greatest| least:最大|小的
(三)uid:返回当前用户的唯一标识符
(四)user:用户名
(五)CASE WHEN THEN END
(一)分类
1、单行函数:
对每一行输入值进行计算,得到相应的计算结果,返回给用户。即每行作为一个输入参数,经过函数计算得到每行的计算结果。如lenth 。
2、多行函数:对多行输入值进行计算,得到多行对应的单个结果。如max、min 。
(二)单行函数
1、分类:字符函数、数字函数、日期函数、转换函数、系统函数
二、字符函数
(一)replace:替换
1、使用:
SELECT a.ename,replace(a.ename,'A','中国') FROM emp a ;
2、分析:只是改变显示,不会改变数据库存储
(二)instr:找指定字符串的索引
1、语法
instr(c1, c2, i, j)
c1:被搜索的字符串
c2:希望搜索的字符串
i:搜索开始的位置,默认是1
j:出现的位置,默认是1
2、使用
在字符串 oracle mothed 中搜索 ot。从第1 个位置找,第1 个出现的位置
SELECT instr('oracle mothed', 'ot', 1, 1 ) FROM DUAL ;
(三)concat:连接 2个字符串
1、使用
SELECT concat(a.empno,a.ename), a.* FROM emp a ; SELECT a.empno||a.ename, a.* FROM emp a ;
2、说明:
作用于 || 功能一致。
(四)initcap:首字母大写,其他都小写
1、使用
SELECT initcap(a.ename) FROM emp a ;
(五)length:返回字符串的长度
1、使用
SELECT a.* FROM emp a WHERE length(a.ename) = 4
2、说明:
SELECT length('苏武') FROM DUAL ;--显示2
中文也算是1个空间长度
(六)lower:全小写;upper:全大写
1、用法
雇员名首字母小写,其他字母大写
SELECT lower(substr(a.ename,1, 1 ))||upper(substr(a.ename,2, length(a.ename) )), a.ename FROM emp a ;
(七)substr:截字符串
1、用法
SELECT substr('oracle mothed' , 1, 3) FROM dual;
(八)lpad(左) 和 rpad(右) 粘贴字符
1、用法
SELECT rpad('gao',10,'*') FROM DUAL ; select lpad(rpad('gao',10,'*'),17,'*') from dual;
(九)Ltrim和Rtrim 删除左右的指定的字符(也可以去空格)
SELECT ltrim('aaaaaaaTTTTTrim', 'a') FROM DUAL
(十)trim:前后去
三、数字函数
(一)avg
1、用法:avg(all | distinct)
distinct 过滤会重复的
四、日期函数
(一)add_months:增加减去月份
SELECT add_months(date'2015-03-01', 3) FROM DUAL ; SELECT add_months(date'2015-03-01', -3) FROM DUAL ;
(二)sysdate:系统时间
(三)next_day(date, 'day'):离给出日期date 最近的day(星期)
SELECT next_day(sysdate,'星期一') FROM DUAL
(四)last_day:返回日期的最后一天
SELECT last_day(sysdate) FROM DUAL
(五)months_between(date1,date2 ):给出date1到date2 的月份
SELECT months_between(date'2015-09-12' , date'2014-09-12') FROM DUAL ;
五、转换函数
(一)to_date
1、语法:
to_date(string,patten):将字符串转化为oracle 中的一个日期。
2、使用
1)场景:插入数据和日期比较
2)插入数据
insert into emp (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO) values (7499, 'ALLEN', 'SALESMAN', 7698, to_date('20-02-1981', 'dd-mm-yyyy'), 1600.00, 300.00, 30);
3)比较日期(与 date 的用法类似)
SELECT a.hiredate FROM emp a WHERE a.hiredate >to_date('1980-12-17','yyyy-mm-dd'); SELECT a.hiredate FROM emp a WHERE a.hiredate >date '1980-12-17'
(二)to_char
1、to_char(obj,patten):可以转换日期、字符串、number等
2、使用
1)转换时间:
SELECT to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') FROM DUAL ;
2)转换number
SELECT to_char(a.sal,'L999,999.999') FROM emp a ; SELECT to_char(1.0876,'999,990.999') FROM DUAL
(三)to_nuber:字符转换为数字
(四)bfilenane(dir, file):指定一个外部二进制文件(blob)
insert into emp () values(bfilenane('路径', 'image.gif'))
六、系统函数
1、当前的数据库实例
SELECT sys_context('userenv' , 'db_name') FROM DUAL
2、语言:
SELECT sys_context('userenv' , 'language') FROM DUAL
3、日期格式
SELECT sys_context('userenv' , 'nls_date_format') FROM DUAL
4、当前的方案
SELECT sys_context('userenv' , 'current_schema') FROM DUAL
七、其他
(一)decode:if语句
SELECT DECODE(3, 1, '是一', 2, '是二', '都不是' ) FROM DUAL
(二)greatest| least:最大|小的
SELECT greatest(2,8) FROM DUAL SELECT least('f', 'g')FROM DUAL
(三)uid:返回当前用户的唯一标识符
SELECT uid FROM DUAL ;
(四)user:用户名
show user;
(五)CASE WHEN THEN END
相关文章推荐
- oracle用户密码过期的处理方法
- Sybase查询表结构的方法(类似于Oracle的Desc)
- Oracle基础(五):多表查询
- oracle rac IO 隔离的存储SCSI锁原理
- windows 10 install oracle 12c error:[ INS-30131 ]
- Oracle存储过程update受外键约束的主键值时完整性冲突解决方案
- Oracle基础(no.1)
- ubuntu 安装oracle-jdk7
- Oracle、MySql、SQLServer 数据分页查询
- 通过Rman catalog 创建及管理Oracle数据库备份
- Oracle Study之-- enq:SQ contention等待事件
- Oracle误删除表数据后的恢复详解
- oracle创建dblink
- Oracle学习(11):PLSQL程序设计
- Oracle11g EXP ORA-01455
- Oracle Big Data Appliance
- Oracle Study之-- enq:SQ contention等待事件
- 实现c# 直接连接Oracle数据库操作,不用安装各种插件
- Oracle数据库Clob类型存储XML数据下节点内容查询
- Oracle Study之--resmgr:cpu quantum等待事件