您的位置:首页 > 数据库 > Oracle

Oracle基础(六):Oracle 函数

2015-06-02 21:04 621 查看
一、概述
(一)分类
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: