【译】MySQL基础教程-11-MySQL-Like 模糊匹配

[广告:最高 ¥2000 红包]阿里云服务器、主机等产品通用,可叠加官网常规优惠使用 | 限时领取

LIKE操作通常用于选择基于模式的数据。以LIKE正确的方式使用运算符对于提高查询性能至关重要。

LIKE运营商允许你基于指定的模式选择表中的数据。因此,LIKE运算符通常用在 语句的WHERE 子句中SELECT

MySQL提供了两个通配符,用于与LIKE运算符一起使用,百分比 %和下划线_

  • percentage(%)通配符允许您匹配零个或多个字符的任何字符串。
  • 下划线(_)通配符允许您匹配任何单个字符。

MySQL LIKE示例

让我们练习一些使用LIKE运算符的例子。请参employees见下表。

员工表

MySQL LIKE与百分比(%)通配符

假设您要搜索名字以字符开头的员工a,可以使用%模式末尾的百分比通配符(),如下所示:

试试看

MySQL LIKE运算符示例
MySQL扫描整个employees表以查找名字以字符开头a并后跟任意数量字符的员工。

为了寻找雇员的最后名称结尾on例如PattersonThompson你可以使用%在图案下面的查询开始通配符:

试试看

MySQL LIKE运算符lastname模式示例

如果您知道搜索的字符串嵌入在列中,则可以%在模式的开头和结尾使用percentage()通配符。

例如,要查找姓氏包含on字符串的所有员工,请使用以下带有模式的查询%on%

试试看

具有前缀和后缀模式的MySQL LIKE运算符

MySQL LIKE with underscore(_)通配符

为了找到雇员的名字开头T,结尾m和包含如之间的任何单个字符,TomTim,您使用下划线通配符来构建模式如下:

试试看

类似MySQL的-与-_-图案

带有NOT运算符的MySQL LIKE运算符

MySQL允许您将NOT运算符与LIKE运算符组合以查找与特定模式不匹配的字符串。

假设您要搜索姓氏不以字符开头的员工B,可以使用NOT LIKE带有该模式的员工作为以下查询:

试试看

MySQL不像示例

请注意,模式与LIKE运算符不区分大小写,因此,b%B%模式会产生相同的结果。

MySQL LIKE与ESCAPE子句

有时,您要匹配的模式包含通配符,例如10%,_20等。在这些情况下,您可以使用该ESCAPE子句指定转义字符,以便MySQL将通配符解释为文字字符。如果未明确指定转义字符,则反斜杠字符\是缺省转义字符。

例如,如果要查找产品代码包含字符串的产品_20,可以使用该模式%\_20%作为以下查询:

试试看

或者您可以指定不同的转义字符,例如,$使用以下ESCAPE子句:

试试看

MySQL LIKE ESCAPE示例

该模式%$_20%匹配包含该_20字符串的任何字符串。

LIKE运营商强制MySQL扫描整个表中查找匹配的行,因此,它不允许数据库引擎使用索引进行快速搜索。因此,LIKE当您从具有大量行的表中查询数据时,使用运算符的查询的性能会降低。

码中人 微信公众号