Skip to main content

类似MySQL:基于指定模式查询数据

类MySQL操作符简介

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

下面是LIKE运算符的语法:

expression LIKE pattern ESCAPE escape_character

在这种语法中,如果表达式与模式匹配,LIKE运算符将返回1。否则,它返回0。

MySQL为构建模式提供了两个通配符:百分比%和下划线33;。

例如,s%匹配任何以字符s开头的字符串,例如sun和six。se_u匹配任何以se开头的字符串,后跟任何字符,如see和sea。

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

通常,在SELECT、DELETE和UPDATE语句的WHERE子句中使用LIKE运算符。

类似MySQL的操作符示例

让我们用一些使用LIKE操作符的例子来练习。我们将使用样本数据库中的以下employees表进行演示:

Employees Table

A) 在百分比(%)通配符示例中使用类似MySQL的运算符

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

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

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

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

MySQL LIKE operator lastname pattern example

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

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

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

MySQL LIKE operator with prefix and suffix patterns

B) 使用类似MySQL的运算符和下划线(u)通配符示例

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

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

mysql-like-with-_-pattern

C) 使用MySQL与运算符示例不同

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

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

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

MySQL NOT LIKE example

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

带ESCAPE子句的类MySQL运算符

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

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

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

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

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

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

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

MySQL LIKE ESCAPE example

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

总结