MySQL LIKE运算符
简介:在本教程中,您将学习如何使用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运算符基于模式查询数据,这比使用比较运算符更灵活。