MySQL LIKE

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

MySQL LIKE 运算符简介

LIKE运算符是一个逻辑运算符,用于测试字符串是否包含指定模式。

以下是LIKE运算符的语法:

expression LIKE pattern ESCAPE escape_characterCode language: SQL (Structured Query Language) (sql)

在此语法中,如果expressionpattern匹配,则LIKE运算符返回 1。否则,返回 0。

MySQL 提供了两种用于构造模式的通配符:百分比%和下划线_

  • 百分比 ( % ) 通配符匹配零个或多个字符的任何字符串。
  • 下划线 ( _ ) 通配符匹配任何单个字符。

例如, s%匹配以字符s开头的任何字符串,例如sunsixse_匹配以se开头并后跟任何字符(例如seesea的任何字符串。

当模式包含通配符并且您希望将其视为常规字符时,可以使用ESCAPE子句。

通常,您将在SELECTDELETEUPDATE语句的WHERE子句中使用LIKE运算符。

MySQL LIKE 运算符示例

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

员工表

A) 使用 MySQL LIKE 运算符和百分比 (%) 通配符示例

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

SELECT 
    employeeNumber, 
    lastName, 
    firstName
FROM
    employees
WHERE
    firstName LIKE 'a%';Code language: SQL (Structured Query Language) (sql)

试试看

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

此示例使用LIKE运算符查找姓氏以文字字符串结尾的员工, on PattersonThompson

SELECT 
    employeeNumber, 
    lastName, 
    firstName
FROM
    employees
WHERE
    lastName LIKE '%on';Code language: SQL (Structured Query Language) (sql)

试试看

MySQL LIKE 运算符姓氏模式示例

要检查字符串是否包含子字符串,可以在子字符串的开头和结尾使用百分比 ( % ) 通配符。

例如,以下查询使用LIKE运算符查找姓氏包含子字符串on的所有员工:

SELECT 
    employeeNumber, 
    lastName, 
    firstName
FROM
    employees
WHERE
    lastname LIKE '%on%';Code language: SQL (Structured Query Language) (sql)

试试看

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

B) 使用带有下划线 ( _ ) 通配符的 MySQL LIKE 运算符示例

要查找名字以字母T开头、以字母m结尾并包含TomTim之间的任何单个字符的员工,您可以使用下划线 (_) 通配符构建模式,如下所示:

SELECT 
    employeeNumber, 
    lastName, 
    firstName
FROM
    employees
WHERE
    firstname LIKE 'T_m';Code language: SQL (Structured Query Language) (sql)

试试看

类似 mysql 的 - _ 模式

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

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

假设您要搜索姓氏不以字母B开头的员工,您可以使用NOT LIKE运算符,如下所示:

SELECT 
    employeeNumber, 
    lastName, 
    firstName
FROM
    employees
WHERE
    lastName NOT LIKE 'B%';Code language: SQL (Structured Query Language) (sql)

试试看

MySQL 不喜欢示例

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

带有 ESCAPE 子句的 MySQL LIKE 运算符

有时该模式可能包含通配符,例如 10%、_20 等。

在这种情况下,您可以使用ESCAPE子句指定转义字符,以便 LIKE 运算符将通配符解释为文字字符。

如果未显式指定转义字符,则反斜杠字符 ( \ ) 是默认转义字符。

例如,如果要查找产品代码包含字符串_20的产品,可以使用模式%\_20%和默认转义字符:

SELECT 
    productCode, 
    productName
FROM
    products
WHERE
    productCode LIKE '%\_20%';Code language: SQL (Structured Query Language) (sql)

试试看

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

SELECT 
    productCode, 
    productName
FROM
    products
WHERE
    productCode LIKE '%$_20%' ESCAPE '$';Code language: SQL (Structured Query Language) (sql)

试试看

MySQL LIKE ESCAPE 示例

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

概括

  • 使用LIKE运算符来测试值是否与模式匹配。
  • %通配符匹配零个或多个字符。
  • _通配符匹配单个字符。
  • Use ESCAPE子句指定除默认转义字符 ( \ ) 之外的转义字符。
  • 使用NOT运算符来否定LIKE运算符。
本教程有帮助吗?