Oracle模糊查询
案例
Oracle数据库中存在表格employee,存放了公司雇员信息,表格内容如下:
雇员ID (ID) | 雇员名称 (NAME) | 雇员年龄 (AGE) | 雇员昵称(NICK) |
---|---|---|---|
001 | 周一 | 18 | 周%18 |
002 | 张一山 | 24 | 张24 |
003 | 周二天 | 28 | 周28 |
004 | 张二 | 26 | 张26 |
现在需要从表格中查询所有姓张的雇员,可以使用Oracle模糊查询。
1. 查询所有姓张的雇员
select * from employee e where e.name like '张%';
2. 查询所有年龄为20到30岁之间的雇员
select * from employee e where e.age like '2_';
当然,也可以通过数值区间来查询符合条件的雇员,这里着重介绍模糊查询,就不作展示了。
3. 查询所有昵称中带有%的雇员
select * from employee e where e.nick like '%\%%' escape '\';
案例分析
Oracle模糊查询使用关键字like和escape,下表分别对这两个关键字进行说明:
关键字 | 说明 |
---|---|
like | 关键字后面跟着带有通配符的字符串,用来与查询内容进行匹配。 |
escape | 关键字后面跟着转义字符(可以是任意字符),声明匹配字符串中的转义字符,对特殊符号进行转义。比如’%‘的前面有转义符,则该’%'为普通字符,而非通配符。 |
介绍关键字的时候已经提到了通配符,用于设置模糊匹配条件,常用的通配符如下表:
通配符 | 说明 |
---|---|
% | 百分号,匹配任意数量(包括0个)任意字符。 |
_ | 下划线,匹配单个任意字符。 |
Oracle的模糊查询的通配符与我们常用的正则表达式类似,不过又有些不同。已经习惯了使用正则表达式的同学,也可以直接使用Oracle提供的正则函数regexp_like(column, ‘regex’)。比如上述案例#1,使用正则函数,可以写成:
select * from employee e where regexp_like(e.name, '^张.*');
总结
Oracle模糊查询使用关键字like和escape,也可以使用正则函数regexp_like。