字符函数:
Oracle中字符函数是最常用的函数,专门用来处理字符。常用字符函数如下:
▼initcap(char):首字母改成大写
▼lower(char):将字符串转换成小写格式
▼upper(char):将字符串转换成大写格式
▼length(char):返回字符串长度
▼substr(char,m[,n]):取得字符串的子串 从第M个字符开始 截取N个字符
▼replace(char,s1,s2):将字符串char中用s2替换s1
▼concat(c1,c2):连接c1,c2两个字符串
eg:查询emp表中所有员工姓名,要求姓名以小写形式显示。
Select lower(ename) from emp;
eg:查询emp表中所有员工姓名,要求姓名以大写形式显示。
Select upper(ename) from emp;
eg:查询emp表中姓名长度刚好为5个字符的员工信息
select ename from emp where length(ename)=5
eg:查询emp表中姓名的前三个字符
select substr(ename,1,3) from emp;
eg:查询emp中姓名,要求首字母大写后面的都小写
//方法一:initcap(char)
Select initcap(ename) from emp;
//方法二:lower() upper() substr() length()
Select concat(upper(substr(ename,1,1)) ,lower(substr(ename,2))) from emp;
eg:查询emp中姓名,要求首字母小写后面的都大写
select lower(substr(ename,1,1))||upper(substr(ename,2)) from emp;
eg:查询emp中姓名,将姓名中所有字母A替换成a
select replace(ename,’A’,’a’) from emp;
数学函数是用来处理数字的。常用数学函数如下
▼round(n [,m])四舍五入 没有m表示四舍五入到整数位
m为正整数,四舍五入到小数点后面m位
m为负整数,四舍五入到小数点前面m位
▼trunc(n [,m]) 截取数字 没有m表示截取到整数位
m为正整数,截取到小数点后面m位
m为负整数,截取到小数点前面m位
▼mod(m,n) 取模(取余)
▼floor(n) 返回小于或等于n的最大整数 (向下取整)
▼ceil(n) 返回大于或等于n的最小整数 (向上取整)
▼abs(n) 返回n的绝对值
▼sin(n) 返回n的正弦值
▼power(m,n) 返回m的n次幂
eg:假设每个月30天,求出emp表中每个员工的姓名,日薪(四舍五入保留两位小数)
select round(sal/30,2),ename from emp;
eg:假设每个月30天,求出emp表中每个员工的姓名,日薪(四舍五入到整数位)
select round(sal/30),ename from emp;
eg:假设每个月30天,求出emp表中每个员工的姓名,日薪(四舍五入到十位)
select round(sal/30,-1),ename from emp;
eg:假设每个月30天,求出emp表中每个员工的姓名,日薪(截取到两位小数)
select trunc(sal/30,2),ename from emp;
eg:假设每个月30天,求出emp表中每个员工的姓名,日薪(截取到整数位)
select trunc(sal/30),ename from emp;
eg:假设每个月30天,求出emp表中每个员工的姓名,日薪(截取到十位)
select trunc(sal/30,-1),ename from emp;
日期函数用来处理日期。常用函数函数如下:
▼sysdate:系统时间
▼add_months(d,n):在指定的日期上加上n个月
▼last_day(d):返回指定日期所在月份的最后一天
eg:查找出入职超过6个月的员工信息。
Select * from emp where add_months(hiredate,6)
eg:查找出emp表中工龄满30年的员工信息。
Select * from emp where add_months(hiredate,30*12)
eg:查询emp表中每个员工姓名,入职日期,入职天数(取整数)
select ename,hiredate,trunc(sysdate-hiredate) from emp
eg:查询emp表中每个月倒数第3天入职的员工信息
select * from emp where last_day(hiredate)-hiredate=2
转换函数是将数据从一种类型转换成另外一种类型,在某些情况下面oracle服务器允许的数据类型和实际不一样,此时oracle服务器会自动将数据转成需要的类型。
例如:
create table test(id int);
insert into test values('10');----此时oracle服务器自动将'10'换成int
create table test1(id varchar2(10));
insert into test1 values(10);----此时oracle服务器自动将10换成字符型
注意:oracle虽然可以进行隐含的数据类型转换,但是不是在所有情况都有效。为了提高数据库的可靠性,我们必须使用转换函数来完成。
常用转换函数如下:
▼to_char()
eg:查询出emp表中员工姓名,入职日期,但是日期后面加上时/分/秒
select ename,to_char(hiredate,’yyyy-mm-dd hh24/mi/ss’) from emp;
eg:查询出emp表中员工信息,但是日期按照yyyy-mm-dd格式显示
select ename,to_char(hiredate,’yyyy-mm-dd’) from emp ;
eg:查询出1981年入职的员工信息
select * from emp where to_char(hiredate,’yyyy’)=1981;
eg:查询出12月份入职的员工信息
select * from emp where to_char(hiredate,’mm’)=12
eg:查询出员工姓名和工资,在工资前面加上美元符号$
select ename,’$’||sal from emp;
select ename,to_char(sal,’$9999999.99’) from emp;
select ename,to_char(sal,'L9999999.99') from emp;//本地货币符号,以电脑电脑操作系统为准。
▼to_date()
Insert into emp(empno,hiredate) values(8000,sysdate);
Insert into emp(empno,hiredate) values(8001,to_date(‘2000/3/6’,’yyyy/mm/dd’));
max()
min()
avg()
sum()
count()