字符函数-(学习笔记)
--字符函数
--upper()将字符转换为大写
--lower()将字符转换为小写
SELECT UPPER('liunan'),LOWER('LIUNAN') FROM dual;
--查询SMITH的信息,写smith写成小写,用UPPER转换为大写
SELECT * FROM emp e WHERE e.ename=UPPER('smith');
--查询所有员工的姓名并将所有员工姓名,首字母大写
SELECT e.empno,e.ename 原来的姓名,INITCAP(e.ename) 员工姓名首字母大写 FROM emp e;
--查询所有员工的编号,姓名,并且将员工姓名中所有字母A替换为字符'_'
SELECT e.empno,e.ename 原来的姓名, REPLACE(ename,'A','_') 字母A替换为字符_ FROM emp e;
SELECT e.empno,e.ename 原来的姓名, Translate(ename,'A','_') 字母A替换为字符_ FROM emp e;
--查询出姓名长度是5的所有员工信息
SELECT * FROM emp e WHERE LENGTH(e.ename)=5;
--查询姓名前3个是JAM的员工信息substr
SELECT * FROM emp e WHERE substr(e.ename,0,3)='JAM'; SELECT * FROM emp e WHERE e.ename LIKE 'JAM%';
--查询所有10部门员工的姓名,但不显示第个员工的前3个字母
SELECT e.deptno,e.ename 原来的姓名, SUBSTR(e.ename,4) 不显示前3个字母姓名 FROM emp e WHERE e.deptno=10;
--显示所有员工的姓名及后3个字母 -负代数从后向前
SELECT e.ename 原来的姓名,SUBSTR(e.ename,-3) 后3个字母 FROM emp e;
--用LENGTH也可以实现
SELECT e.ename 原来的姓名,SUBSTR(e.ename,-3) 后3个字母, SUBSTR(e.ename,LENGTH(e.ename)-2) 后3个字母 FROM emp e;
--substr下标是从1开始的,设置为0会自动从1开始,设置为负数从后向前截取
--返回指定字符的ASCII码
SELECT ASCII('A'),ASCII('a') FROM dual; --chr()将ASCII变为字符 SELECT CHR('65'),CHR('97') FROM dual; SELECT ASCII('A'),ASCII('a'),CHR('65'),CHR('97') FROM dual;
--去掉左边空格
SELECT LTRIM(' liunan ') FROM dual; --去掉右边空格 SELECT LTRIM(' liunan ') 去掉左边空格, RTRIM(' liunan ') 去掉右边空格 FROM dual;
--去掉2边空格
SELECT LTRIM(' liunan ') 去掉左边空格, RTRIM(' liunan ') 去掉右边空格, TRIM(' liunan ') 去掉2边空格 FROM dual;
--LTRIM/RTRIM也可以截取
SELECT LTRIM('xyzadams','xyz') 左侧去掉xyz, RTRIM('xyzadams','ams') 右侧去掉ams FROM dual;
--字符左,右填充函数LPAD(),RPAD()
SELECT LPAD('liunan',10,'*') 去掉字符长度后左侧填充指定字符, RPAD('liunan',10,'*') 去掉字符长度后左侧填充指定字符, RPAD(LPAD('liunan',10,'*'),14,'*') 搭配使用左右填充 FROM dual;
位置查找
select instr('abcedfghedfghijk','edf',1,2) from dual; --查找edf在字符串中出现第二次的位置,从1开始 --结果为:9