Oracle基础知识整理:C站下载链接
文章目录
9 Oracle 函数
9.1 sql函数的使用 --字符函数
9.2 sql函数的使用 --数学函数
9.3 sql函数的使用 --日期函数
9.4 sql函数的使用 --转换函数
9 Oracle 函数
9.1 sql函数的使用 --字符函数
·介绍
字符函数是oracle中最常用的函数,我们来看看有哪些字符函数:
*lower(char):将字符串转化为小写的格式
*upper(char):将字符串转化为大写的格式
*length(char):返回字符串的长度
*substr(char,m,n):取字符串的子串,从m所在的位置取,取出n个来
1.将所有员工的名字按小写的方式显示
select lower(ename) from emp;
2.将所有员工的名字按大写的方式显示
select upper(ename) from emp;
3.显示正好为5个字符的员工的姓名
select * from emp where length(ename)=5;
4.显示所有员工姓名的前三个字符
select subStr(ename,0,3) from emp;
5.以首字母大写的方式显示所有员工的姓名
select upper(substr(ename,1,1)) || lower(substr(ename,2,length(ename)-1)) from emp ;
6.以首字母小写的方式显示所有员工的姓名
select lower(substr(ename,1,1)) || upper(substr(ename,2,length(ename)-1)) from emp ;
*replace(char1,search_string,replace_string)
7.显示所有员工的姓名,用"a"替换所有“A”
select replace(ename,'A','a') from emp;
*instr(start,SearchString,SearchChar, [compare])
8.取子串在字符串的位置,start,用于设置每次搜索的开始位置,compare(0和1)0表示执行二进制比较,1表示执行文本比较查找0在名字中的位置
select ename,instr(ename,'O') from emp;
9.2 sql函数的使用 --数学函数
·介绍
数学函数的输入参数和返回值的数据类型都是数字类型的。数学函数包括cos,cosh,exp,ln,log,sin,sinh,sqrt,tan,tanh,acos,asin,atan,round,我们讲最常用的:
*round(n,[m])
*trunc(n,[m])
*mod(m,n)
*floor(n)
*ceil(n)
对数字的处理,在财务系统或银行系统中用的最多,不同的处理方法,对财务报表有不同的结果。
·round(n,[m])该函数用于执行四舍五入,
如果省掉m,则四舍五入到整数;
如果m是正数,则四舍五入到小数点的m位后, 如果m是负数,则四舍五入到小数点的m位前。
·trunc(n,[m])该函数用于截取数字。
如果省掉m,就截取小数部分,
如果m是整数,就截取到小数点的m位后,
如果m是负数,则截取到小数点的前m位
·mod(m,n) 取模、
eg.
select mod(10,2) from dual; 结果为0 select mod(10,3) from dual; 结果为1
1.在oracle中有一个dual表,是用来做测试的
·floor(n)返回小于或是等于n的最大整数
floor(55.66) 取值结果为55
向下取整
·ceil(n)返回大于或是等于n的最小整数
ceil(55.66) 取值结果为56
向上取整
2.显示在一个月为30天的情况下所有员工的日薪金,忽略余数。
select ename,trunc(sal/30) from emp; 或 select ename,floor(sal/30) from emp;
3.其它的数学函数,有兴趣的可去看看
其他数学函数 |
*abs(n) 返回数字n的绝对值 select abs(-13) from dual; 结果13 |
*acos(n) :返回数字的反余弦值 |
*asin(n) :返回数字的反正弦值 |
*atan(n) :返回数字的反正切 |
*cos(n) : |
*exp(n) :返回e的n次幂 |
*log(m,n) :返回对数值 (m的x次幂=n) |
*power(m,n) :返回m的n次幂 |
9.3 sql函数的使用 --日期函数
·介绍
日期函数用于处理date类型的数据
默认情况下日期格式是dd-mon-yy 即12-7月-78
(1)sysdate:该函数返回系统时间
(2)add_months(d,n):在指定日期d上加n个月
(3)last_day(d):返回指定日期所在月份的最后 一天
1.查找已经入职8个月的员工
select * from emp where sysdate>add_months(hiredate,8);
2.显示满10年服务年限的员工的姓名和受雇日期
select * from emp where sysdate>=add_months(hiredate,12*10);
3.对于每个员工,显示其加入公司的天数
select ename, trunc(sysdate-hiredate) "入职天数" from emp;
4.找出各月倒数第3天受雇的所有员工
select ename,hiredate from emp where last_day(hiredate)-2=hiredate;
9.4 sql函数的使用 --转换函数
·介绍
**转换函数:**用于将数据类型从一种转为另外一种,在某些情况下,oracle server允许值的数据类型和实际的不一样,这时oracle server会隐含的转化数据类型
比如:
create table tl(id int); insert into t1 values('10')-->这样oracle会自动的将'10'-->10 create table t2(id varchar2(10)); insert into t2 values(1); -->这样oracle就会自动的将1 -->'1';
我们要说的是尽管oracle可以进行隐含的数据类型的转换,但是它并不适应所有的情况,为了提高程序的可靠性,我们应该使用转换函数进行转换。
·to_char 转换字符串
日期是否可以显示 时/分/秒
select to_char(sysdate, 'yyyy-mm-dd HH24:mi:ss') from dual;
薪水是否可以显示指定的货币符号
select ename,to_char(sal,'L99,999.99') from emp; select ename,to_char(sal,'$99,999.99') from emp;
1. 显示1980年入职的所有员工
select * from emp where to_char (hiredate,'yyyy')=1980;
2.显示所有12月入职的员工
select * from emp where to_char (hiredate,'mm')=12;
·sys_context
1)terminal:当前会话客户所对应的终端的标识符
2)language:语言
3)db.name:当前数据库名称
4)nls_date_format:当前会话客户所对应的日期格式
5)session_user:当前会话客户所对应的数据库用户名
6)current_schema:当前会话客户所对应的默认方案名?
7)host:返回数据库所在主机的名称
通过该函数,可以查询一些重要信息,比如你现在使用那些数据库?
select sys_context('userenv','db_name') from dual;
·用户和方案的关系
用户一旦创建以后,oracle就自动的创建一个方案,方案的名称和用户名一模一样,方案里边有很多的数据对象(表,视图,触发器,存储过程,角色,表空间),它是以方案的方式来组织数据对象的。
注意:用户名和方案是一样的,一个用户对应一个方案