MySQL LIKE运算符

时间:2019-11-20 08:52:04  来源:igfitidea点击:

简介:在本教程中,您将学习如何使用MySQL LIKE运算符根据指定的模式查询数据。

MySQL LIKE运算符简介

LIKE运算符是一种逻辑运算符,用于测试字符串是否包含指定的模式。
这是LIKE运算符的语法:

expression LIKE pattern ESCAPE escape_character

在SELECT,DELETE和UPDATE语句的WHERE子句中使用LIKE运算符可基于模式过滤数据。

MySQL提供了两个通配符来构造模式:百分比%和下划线_。

  • 百分比(%)通配符与零个或多个字符的任何字符串匹配。

  • 下划线(_)通配符匹配任何单个字符。

例如,s%匹配以字符s开头的任何字符串,例如sun和6。
se_匹配以se开头的任何字符串,后跟诸如see和sea之类的任何字符。

MySQL LIKE运算子范例

让我们通过一些使用LIKE运算符的示例进行练习。
我们将使用示例数据库中的以下employees表进行演示:

A)将MySQL LIKE与百分比(%)通配符示例一起使用

本示例使用LIKE运算符查找名字以a开头的员工:

SELECT 
    employeeNumber, 
    lastName, 
    firstName
FROM
    employees
WHERE
    firstName LIKE 'a%';

在此示例中,MySQL扫描整个employee表以查找其名字以字符a开头且后跟任意数量的字符的雇员。

本示例使用LIKE运算符查找姓氏以例如Patterson,Thompson结尾的员工:

SELECT 
    employeeNumber, 
    lastName, 
    firstName
FROM
    employees
WHERE
    lastName LIKE '%on';

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

例如,要查找姓氏包含在上的所有雇员,请使用以下查询,其模式为%on%

SELECT 
    employeeNumber, 
    lastName, 
    firstName
FROM
    employees
WHERE
    lastname LIKE '%on%';

B)使用MySQL LIKE和下划线(_)通配符示例

要查找名称以T开头,以m结尾并且包含例如Tom和Tim之间的任何单个字符的员工,请使用下划线(_)通配符来构造模式,如下所示:

SELECT 
    employeeNumber, 
    lastName, 
    firstName
FROM
    employees
WHERE
    firstname LIKE 'T_m';

C)使用MySQL LIKE运算符和NOT运算符示例

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

假设您要搜索姓氏不是以字符B开头的员工,则可以将NOT LIKE用于以下查询所示的模式:

SELECT 
    employeeNumber, 
    lastName, 
    firstName
FROM
    employees
WHERE
    lastName NOT LIKE 'B%';

请注意,该模式不区分大小写,因此,b%或B%模式返回相同的结果。

带有ESCAPE子句的MySQL LIKE运算符

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

例如,如果要查找产品代码包含字符串_20的产品,则可以使用模式%\ _ 20%,如以下查询所示:

SELECT 
    productCode, 
    productName
FROM
    products
WHERE
    productCode LIKE '%\_20%';

或者,您可以使用ESCAPE子句指定其他转义字符,例如$:

SELECT 
    productCode, 
    productName
FROM
    products
WHERE
    productCode LIKE '%$_20%' ESCAPE '$';

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

在本教程中,您学习了如何使用MySQL LIKE运算符基于模式查询数据,这比使用比较运算符更灵活。