
上QQ阅读APP看书,第一时间看更新
1.13 模式查找
问题
你想返回与特定子串或模式匹配的行。请看下面的查询及其返回的结果集。
select ename, job from emp where deptno in (10,20) ENAME JOB ---------- --------- SMITH CLERK JONES MANAGER CLARK MANAGER SCOTT ANALYST KING PRESIDENT ADAMS CLERK FORD ANALYST MILLER CLERK
在部门编号为 10 和部门编号为 20 的员工中,你只想返回那些姓名包含字母
I
或职位名称以ER
结尾的员工。ENAME JOB ---------- --------- SMITH CLERK JONES MANAGER CLARK MANAGER KING PRESIDENT MILLER CLERK
解决方案
结合使用
LIKE
运算符和 SQL 通配符(%
)。1 select ename, job 2 from emp 3 where deptno in (10,20) 4 and (ename like '%I%' or job like '%ER')
讨论
用于模式匹配运算
LIKE
中时,通配符(%
)与任何字符序列都匹配。大多数 SQL 实现还提供了与单个字符匹配的下划线运算符(_
)。通过将搜索模式I
放在两个%
之间,可以与任何包含I
的字符串匹配。在没有将搜索模式放在两个%
之间的情况下,%
的位置将影响查询结果。如果要查找以ER
结尾的职位名称,那么可以将%
放在ER
前面;如果要查找以ER
开头的职位名称,则需要将%
放在ER
后面。