Oracle 的函数
分类
单行函数: 对每一行输入值进行计算,得到相应的计算结果,返回给用户,也就是说,
每一行作为一个输入参数,通过函数计算得到每行的计算结果。比如说length
多行函数:对多行输入值进行计算,得到多行对应的多个结果,比如max,min等
单行函数
字符函数:
用于处理字符的业务
replace(char 1,search_string,replace_string)
举例:
在emp表中的ename列中替换所有的A
select replace(ename,’A’,’替换后的A’) from emp;
instr( C1,C2,I,J)
C1 被搜索的字符串
C2 希望搜索的字符串
I 搜索开始的位置
J 出现的位置,默认为1
举例:
select instr(‘Oracle index string function’,’s’,1,2) from dual;
ascii(‘要转换的字符’) 返回与指定的字符对应的十进制数
案例:
select ascii('A') A,ascii('a') as a,ascii('0') as zero,ascii(' ') as space from dual;
chr(int) 给出整数,返回对应的字符
案例:
select chr(54740) as zh,chr(65) as c6 from dual;
concat 连接字符串
案例:
select concat(ename,' 是好人') from emp;
等效:
select ename || ‘是好人’ from emp;
initcap 字符转换首字母大写
案例:
select initcap('abc') from dual;
length 计算字符串长度 ,不区分中英文
案例:
找出emp表中字符是4的员工
select * from emp where length(ename) = 4;
lower和upper函数 全部变小写 / 全部变大写
综合:
把员工的名字首字母小写,其他字母大写?
select concat(lower(substr(ename,1,1)),upper(substr(ename,2,length(ename)-1))) from emp;
lpad 和 rpad 左填充/右填充
案例:
select lpad(‘ 测试’,14,’左填左填’) from dual;
ltrim 和 rtrim 坐裁剪/右裁剪
案例:
select rtrim('right trim oooooooo','o') from dual;
-------------------------------------------------------
裁剪全部o
trim 裁剪指定字符,仅支持单字符
select trim('t' from 'the is a trim') from dual;
数字函数:
ceil函数 用于向上取整
select ceil(3.1415926) from dual;
floor 用于向下取整
mod(m,n) 取模,如果n是0,返回m。
round函数,用于四舍五入
trunk函数,用于截取一个整数
add_months (日期值,增加||减少的月份)
显示最近三个月入职的员工
-------------------------------------------
sysdate : 显示当前日期
last_day 显示当月最后一天
next_day 显示最近指定的日期
to_char(number) 转换指定数值格式
案例:
select to_char(sal,'L999G999D99') FROM emp;
9: 表示一个数字
L:表示本地货币样式
G: 分组分隔符(使用本地化)
D:表示逗号
根据deptno编号显示不同的信息
select decode(deptno,10,'10号部门',20,'20号部门',30,'30号部门') from emp;
to_date(string,format); --将字符串转换成日期
举例:
insert into emp(empno,hiredate) values(7777,to_date('2017-8-6','yyyy-mm-dd'));
说明:
to_char 是使日期转换成字符
to_date 是使字符转换成日期
系统函数:
功能:用于查询系统信息;
视频笔记:
小技巧
使用子查询完成行迁移
格式: create table 表名 as select 列名1[ ,列名2 …]from 待复制表 [where]
使用子查询完成更新
案例:
希望员工scott的岗位、工资、补助与smith员工一样
传统:update emp set job = (select job from emp where ename = ‘smith’),sal = (sele….),comm = (sele….) where enmae = ‘scott’;
快捷:update emp set (job,sal,comm) = (select job,sal,comm from emp where ename = ‘’smith) where ename = ‘scott’;