正则表达式

第6章 正则表达式

1. 返回从 ename 的第二个位置开始查找,并且是以“L”开头到“K”结尾的字串。

1
SELECT * FROM emp WHERE REGEXP_LIKE(ename, '^.L.*K$');

2. 查找员工编号中第一个非数字字符的位置。

1
2
SELECT REGEXP_INSTR('13G2S25', '\D') FROM dual;
SELECT REGEXP_INSTR(empno, '\D') FROM emp;

3. 从第三个字符开始,查找员工编号中第二个非数字字符的位置。

1
2
SELECT REGEXP_INSTR('13G2S25', '\D', 3, 2) FROM dual;
SELECT REGEXP_INSTR(empno, '\D', 3, 2) FROM emp;

4. 查找员工编号为 4 位数字的员工信息。

1
SELECT * FROM emp WHERE REGEXP_LIKE(empno, '^\d{4}$');

5. 查找员工姓名为全英文的员工信息。

1
SELECT * FROM emp WHERE REGEXP_LIKE(ename, '^[a-zA-Z]+$');

6. 查找员工姓名以“a”字母开头,不区分大小写。

1
SELECT * FROM emp WHERE REGEXP_LIKE(ename, '^a', 'i');

7. 查找员工姓名为全英文,且以“N”结尾的员工信息。

1
SELECT * FROM emp WHERE REGEXP_LIKE(ename, '^[A-Za-z]+N$');

8. 查找员工编号以非数字开头的员工信息。

1
SELECT * FROM emp WHERE REGEXP_LIKE(empno, '^\D');

9. 把 ename 中所有非字母字符替换为“A”。

1
SELECT REGEXP_REPLACE(ename, '[^A-Za-z]', 'A') FROM emp;

10. 请写出验证手机的正则表达式,如长度 11 位,全数字。

1
SELECT 'NICE' FROM dual WHERE REGEXP_LIKE('12345678911', '^\d{11}$');

11. 从第三个字符开始,查找 sun4zhu5an 中第二个非数字字符的位置。

1
SELECT REGEXP_INSTR('sun4zhu5an', '\D', 3, 2) FROM dual;

12. 从第三个字符开始,查找 su67nzhuan 中第二个非数字字符的下一个字符位置。

1
SELECT REGEXP_INSTR('su67nzhuan', '\D', 3, 2, 1) FROM dual;

正则表达式
https://blog.pangcy.cn/2018/10/06/数据库相关/Oracle/SQL 练习/正则表达式/
作者
子洋
发布于
2018年10月6日
许可协议