--返回第一个字符的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,100,0) 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;