1.13 按模式搜索

问题:

需要返回匹配特定子串或模式的行

在部门10和部门20,需要返回名字中有一个“1”或者职务(job title)中以“ER”结尾的员工

解决方案:

select ename,job from emp where deptno in (10,20) and(ename like '%I%' or job like '%ER' )

【说明】

  1. 最常使用的通配符是百分号(%),所有DBMS皆支持。在搜索串中,%表示任何字符出现任意次数

  2. 通配符%看起来像是可以匹配任何东西,但有个例外,这就是NULL。子句WHERE name LIKE ‘%’不会匹配产品名称为NULL的行

  3. MS SQL还有通配符[]

【注意】

SQL 的通配符很有用,但这种功能是由代价的,即通配符搜索一般比前面讨论的其他搜索要耗费更长的处理时间

用通配符时要记住的技巧

  • 不要过度使用通配符,如果有其他操作符能达到相同的目的,应该使用其他操作符。

  • 在确实需要使用通配符时,也尽量不要把他们用在搜索模式的开始处。把通配符置于开始处,搜索起来是最慢的

最后更新于