单行函数

第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
-- 方法 1:使用 SUBSTR 函数
SELECT * FROM emp WHERE SUBSTR(ename, 3, 1) = 'A';

-- 方法 2:使用 INSTR 函数
SELECT * FROM emp WHERE INSTR(ename, 'A', 3, 1) = 3;

-- 方法 3:使用 LIKE 操作符
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;

-- 去除开头的 'h'
SELECT TRIM('h' FROM 'hello') FROM dual;

-- 去除开头的 'h' 和结尾的 'o',再去除 'e'
SELECT TRIM(TRAILING 'o' FROM TRIM('e' FROM TRIM('h' FROM 'hello'))) FROM dual;

13. 显示所有雇员的 enamesal。格式化 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;

单行函数
https://blog.pangcy.cn/2018/10/02/数据库相关/Oracle/SQL 练习/单行函数/
作者
子洋
发布于
2018年10月2日
许可协议