第2章 单行函数使用
1. 将字符串 ‘abc’ 以 10 位长度输出,不足 10 位用 ‘–’ 补足(分别从左边和右边补足)。
1 2
| SELECT RPAD('abc', 10, '--') FROM dual; SELECT LPAD('abc', 10, '--') FROM dual;
|
2. 将字符串 ‘ abc ewr 3245 4 ‘ 去除两头空格输出。
1
| SELECT TRIM(' abc ewr 3245 4 ') FROM dual;
|
3. 将字符串 ‘abc 234 abc abc def abc’ 中的 ‘abc’ 替换为 ‘—‘ 输出。
1
| SELECT REPLACE('abc 234 abc abc def abc', 'abc', '---') FROM dual;
|
4. 查询员工表,将所有员工工资上涨 11.173% 后,输出。
1
| SELECT sal * 1.11173 FROM emp;
|
5. 查询 emp
表中 ename
长度相同的员工记录。
1 2 3 4 5 6 7 8
| SELECT CASE WHEN LENGTH(ename) = 5 THEN '第一组:5个字节' WHEN LENGTH(ename) = 6 THEN '第二组:6个字节' ELSE '其他组' END AS 分组 FROM emp ORDER BY LENGTH(ename);
|
6. 查询 emp
表中 ename
首字母相同的员工记录。
1 2 3 4 5 6 7
| SELECT CASE WHEN SUBSTR(ename, 1, 1) = 'S' THEN '首字母为S' WHEN SUBSTR(ename, 1, 1) = 'A' THEN '首字母为A' ELSE '其他组' END AS 分组 FROM emp;
|
7. 写一个查询,用首字母大写,其他字母小写显示雇员的 ename
,显示名字的长度,并给每列一个适当的标签,条件是满足所有雇员名字的开始字母是 J、A 或 M 的雇员,并对查询结果按雇员的 ename
升序排序。
1 2 3 4
| SELECT INITCAP(ename) AS 姓名, LENGTH(ename) AS 姓名长度 FROM emp WHERE SUBSTR(ename, 1, 1) IN ('J', 'A', 'M') ORDER BY ename;
|
8. 查询员工姓名中包含大写或小写字母 A 的员工姓名。
1
| SELECT * FROM emp WHERE ename LIKE '%A%' OR ename LIKE '%a%';
|
9. 查询部门编号为 10 或 20,并且姓名中包含大写字母 A 的员工姓名,员工姓名长度(提示:要求使用 INSTR
函数,不能使用 LIKE
进行判断)。
1
| SELECT * FROM emp WHERE deptno IN (10, 20) AND INSTR(ename, 'A') > 0;
|
10. 查询每个职工的编号、姓名、工资,要求将查询到的数据按照指定的格式合并成一个字符串,其中工资不足部分用 ‘*‘ 填充,右对齐。
1
| SELECT empno || '--' || ename || '--' || RPAD(sal, 5, '*') FROM emp;
|
11. 查询员工 ename
的第三个字母是 A 的员工的信息(使用 3 个函数分别写出)。
1 2 3 4 5 6 7 8
| SELECT * FROM emp WHERE SUBSTR(ename, 3, 1) = 'A';
SELECT * FROM emp WHERE INSTR(ename, 'A', 3, 1) = 3;
SELECT * FROM emp WHERE ename LIKE '__A%';
|
12. 使用 TRIM
函数将字符串 ‘hello’、’ Hello ‘ 分别处理得到下列字符串:ello、Hello、ll、hello。
1 2 3 4 5 6 7 8
| SELECT TRIM(' Hello ') FROM dual;
SELECT TRIM('h' FROM 'hello') FROM dual;
SELECT TRIM(TRAILING 'o' FROM TRIM('e' FROM TRIM('h' FROM 'hello'))) FROM dual;
|
13. 显示所有雇员的 ename
和 sal
。格式化 sal
为 15 个字符长度,用 ‘$’ 左填充,列标签为 SALARY。
1
| SELECT ename, LPAD(sal, 15, '$') AS SALARY FROM emp;
|
14. 输出员工表中的信息,其中展示的格式为 “JOHN’S JOB IS CLERK;”(其中 JOHN 代表名字,CLERK 代表职位)。
1
| SELECT ename || '''S JOB IS ' || job FROM emp;
|