Oracle操作

--返回第一个字符的ascii值
select ascii(ename),ename from emp;
--返回ascii对应的字符
select chr(97) from dual;
--将字符串中的首字母大写,其余小写
select initcap(ename), ename from emp;
--所有字母小写
select lower(ename), ename from emp;
--所有字母大写
select upper(ename), ename from emp;
--字符串替换
select replace(ename,'T','*'), ename from emp;
--查找指定字符串所在位置(起始位置,出现次数)(3代表从第三个位置开始查找,包括第三个,)
--可根据起始位置和出现次数
--如果只有一个参数,那么认为是起始位置,而不是第几次出现
select instr(ename,'L'1,2),ename from emp;
--字符串截取(strat从1开始,1代表截取所有,负数代表从末尾截取,-1代表截取最后一个)
select substr(ename,2),ename from emp;
--连接字符串,concat,等同于||
select concat(empno,ename) from emp;
--返回字符个数
select length(ename),ename from emp;
--去空格或指定字符(只能去除单个指定字符,不能去除字符串)
select trim('S' from ename) ,ename from emp;

--很重要的两个函数
--NVL函数(如果comm为null则返回0,如果不为nul则返回comm的值)
select ename,nvl(comm,0) from emp;
--NVL2函数 (如果为null返回0,如果不为空返回100)
select ename,nvl2(comm,1000) comm from emp;

练习:

--查出所有员工的姓名,首字母大写,其余字母小写
select initcap(ename) ,ename from emp;
--查询出所有员工的姓名,如果姓名中有“S”,全部替换成“8”
select replace(ename,'S','8') ,ename from emp;
--查询出姓名中有两个“L”的员工信息
select instr(ename,'L',1,2),ename from emp ;
select * from emp where instr(ename,'L',1,2)=2;
--查询出所有员工的姓名和职位的前五个字符
select ename,substr(job,0,5),job from emp;
--查询出姓名字符超过5个的员工信息
select * from emp where length(ename)>5;
--查询出所有员工的姓名和年总收入
select ename,(sal+nvl(comm,0))*12 from emp;
原文地址:https://www.cnblogs.com/qilin20/p/12426598.html