字符函数
注:使用数据库中特有的dual(虚拟表)表进行下列字符函数的验证;
1.UPPER(列|字符串):将字符串全部转换位的大写;
2.LOWER(列|字符串):将字符串全部转化为小写;
SELECT UPPER('king'),LOWER('KING1')
FROM dual;
查询“smith”的完整信息
SELECT *
FROM emp
WHERE ename=UPPER('smith');
3.INITCAP(列|字符串,字符串):将字符串的开头首字母大写;
查询所有雇员的姓名,要求每个雇员的姓名以首字母大写形式出现:
SELECT ename 原始姓名, INITCAP(ename) 姓名开头首字母大写
FROM emp;
4.REPLACE(列|字符串,新的的字符串):使用新得字符串替换旧的字符串;
查询所有雇员姓名,但是要求将雇员姓名中所有字母A替换为字母”_”:
SELECT ename 原始姓名, REPLACE(ename, 'A', '_') 替换后姓名
FROM emp;
5.LENGTH(列|字符串):求出字符串的长度;
查询出所有雇员名字的长度
select ename, LENGTH(ename) 名字的长度
FROM emp;
查询出所有雇员中名字长度等于5的:
SELECT ename
FROM emp
WHERE LENGTH(ename)=5;
6.SUBSTR(列|字符串,开始点[长度]):字符串截取;
查询雇员姓名前三个字母是“JAM”的雇员姓名:
SELECT *
FROM emp
WHERE SUBSTR(ename,0,3)='JAM';
查询所有10部门雇员的姓名,但是不显示每个雇员姓名的前三个字母:
SELECT ename 原名字 , SUBSTR(ename, 4) 现在的名字
FROM emp
WHERE deptno=10;
显示每个雇员姓名的后三个字母:
第一种表示方法:
SELECT ename , SUBSTR(ename, LENGTH(ename)-2)
FROM emp;
第二种表示方法:
SELECT ename , SUBSTR(ename,-3)
FROM emp;
两种截取方式:
A.从指定位置截取到结尾:SUBSTR(列|字符串,截取开始点);
B.截取部分字符:SUBSTR(列|字符串, 截取开始点, 截取结束点);
注:数据库中,下标是从1开始的,如果写的是0,那么自动转换为1开始;
7.CHR(数字):给出一个数字,并返回与之对应的字母;
SELECT CHR(65)
FROM dual;
8.ASCII(字符):返回字符对应的的十进制数字;
SELECT ASCII('A') A的值
FROM dual;
9.RPAD(列|字符串,长度,填充字符),
LPAD(列|字符串, 长度,填充字符):在右或者左填充指定长度的字符串;
字符串右填充:
SELECT ename, RPAD(ename, 6,'*')
FROM emp;
字符串左填充:
SELECT ename, LPAD(ename, 6,'*')
FROM emp;
组合使用左右都填充:
SELECT ename, RPAD(LPAD(ename, 9,'*'), 15, '*')
FROM emp;
10.LTRIM(字符串),RTRIM(字符串):去掉左或者右空格;
去掉左空格
SELECT ' WANGJIJIE ' 原始字符串, LTRIM(' WANGJIJIE ')
FROM dual;
去掉右空格:
SELECT ' WANGJIJIE ' 原始字符串, RTRIM(' WANGJIJIE ')
FROM dual;
11.TRIM(列|字符串):去掉左右空格;
去掉左右空格
SELECT ' WANGJIJIE ' 原始字符串, TRIM(' WANGJIJIE ')
FROM dual;
12.INSTR(列|字符串,要查找的字符串,开始位置,出现位置):查找一个子字符串是否在指定位置上出现;
注:如果查找到字符串,就返回字符串出现的位置,查找不到就返回0;
SELECT INSTR('MLDN JAVA', 'MLDN') 查找的到,
INSTR('MLDN JAVA','JAVA')查找的到,
INSTR('MLDN JAVA','JIJIE')查找不到
FROM DUAL;