--字符函数
--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;