Mysql 中的Like关键字的7个实例与实际使用
我们在使用 MySQL 运算符已经有一段时间了,包括但不限于 WHERE 条件和 SELECT 语句。现在,用于借助通配符搜索字符串模式的 LIKE 条件运算符大放异彩的时候到了。在本文中,我们将提供使用 LIKE 的基本语法,并举例说明如何在查询中使用。
MySQL LIKE 语法
MySQL LIKE 运算符用于在表中的字符串中查找特定模式。在其最基本的形式中,它看起来有点像这样:
SELECT column_name(s) FROM table_name WHERE column_name LIKE pattern;
- SELECT 选择要从表中检索的列。
- FROM 指定您正在使用的表。
- WHERE 指定搜索条件,在本例中为 LIKE 运算符。
- LIKE 后跟一个模式,该模式指定要查找的字符串。该模式可以包含通配符,通配符是可以匹配任何字符或字符集的特殊字符。
现在我们已经完成了基础知识,让我们开始做正题,看看一些接近现实生活中的 LIKE 运算符用法示例。我们将解释如何单独和组合使用不同的通配符,提供 NOT LIKE 语法和不区分大小写的搜索的示例,并介绍如何将 UPDATE 和 DELETE 命令与 LIKE 运算符一起使用。
MySQL LIKE:(%)通配符
- 在MySQL中,百分比符号 % 用作运算符后面的通配符,以匹配任何零个或多个字符的 LIKE 字符串。
- 我们假设有一个包含产品信息(包括其名称)的产品表。我们希望找到所有名称中带有油漆的产品。我们可以使用 % 通配符来匹配单词 paint 之前或之后的任何字符,如下所示:
SELECT * FROM product WHERE Name LIKE '%paint%';
- 正如我们所看到的,已经找到了五个匹配的记录:
- % 通配符还可用于搜索特定位置的任意数量的字符。例如,若要查找以字母 M 开头的所有产品,请执行以下查询:
SELECT * FROM product WHERE name LIKE 'M%';
- 查询结果包括所有以 M 开头的产品:
MySQL LIKE:(_) 下划线通配符:
- MySQL之旅的下一站将是(_)下划线通配符。当它跟随 LIKE 运算符时,它会替换您要查找的模式中的一个或多个字符。
- 让我们以相同的产品表为例。假设表中的所有产品都有一个唯一的代码,该代码由两个字母和四个数字组成,用破折号分隔。ProductNumber 列中的每个字母都表示物料所属的类别。例如,我们需要找到 C 类别下的所有项目,但我们不关心其余的字符。在这种情况下,我们可以使用下划线 (_) 通配符来表示模式中的这些字符:
SELECT * FROM product WHERE ProductNumber LIKE 'C_-____';
在执行查询时,我们看到结果包含不同类型的类别,但它们都以 C 开头:
MySQL LIKE:组合 (%) 和 (_) 通配符
- 前面的查询示例可以正常工作,并准确地检索我们想要检索的内容。但是,它需要过多的符号。为了优化它,让我们组合 (%) 和 (_) 通配符:
SELECT * FROM product WHERE ProductNumber LIKE 'C_%';
- 我们能看到完全相同的输出,但查询效率更高:
MySQL NOT LIKE 语法
- MySQL NOT LIKE 运算符的工作方式与 LIKE 比较运算符相反。它不是根据指定的模式检索数据,而是查找与其不匹配的所有内容。当我们想从搜索结果中排除特定数据时,此运算符可能很有用。例如,如果我们要检索不属于某个类别的所有产品。
- 在本文的前面,我们使用了一个产品表,其中所有产品都有一个唯一的代码,该代码由两个字母和四个数字组成,中间有一个破折号。假设我们需要检索不属于以字母 C 开头的类别的所有记录:
SELECT * FROM product WHERE ProductNumber NOT LIKE 'C%';
- 与以前不同的是,查询结果现在包括除以字母 C 开头的类别之外的所有类别。
MySQL LIKE:不区分大小写的搜索
- 在某些情况下,可能需要从表中检索数据,而不管字符串的确切大小写如何。这意味着无论数据是大写还是小写格式,都应检索数据。
- 在 MySQL 中,LIKE 运算符可以借助 LOWER() 或 UPPER() 函数执行不区分大小写的搜索。这些函数实质上是将表中的所有内容都带到一个公分母。例如,我们可以使用 LOWER() 将所有记录转换为小写或使用 UPPER() 将所有记录转换为大写。
SELECT * FROM customer WHERE LOWER(last_name) LIKE '%jo%';
- 因此,我们不必担心区分大小写。
使用 LIKE 的 MySQL UPDATE
- 如果只能将 LIKE 运算符与 SELECT 一起使用,那将是不幸和不方便的。但是,MySQL为我们提供了更多选项,例如将UPDATE语句与LIKE配对。此组合将更新与指定模式匹配的多行。
- 让我们看一个例子,说明UPDATE和LIKE组合在实践中是如何工作的。假设我们有一个名为 customer 的表,其中包含有关他们的各种信息,包括他们的电子邮件。我们希望更新表中电子邮件地址以 example.com 结尾的所有记录改成 newexample.com:
- 执行 UPDATE 查询:
UPDATE customer
SET email = REPLACE(email, 'example.com', 'newexample.com')
WHERE email LIKE '%example.com';
- 所有电子邮件结尾都将使用查询中指定的域名进行更新:
使用 LIKE 的 MySQL DELETE
- 除了 SELECT 和 UPDATE 之外,LIKE 运算符还可以与 DELETE 语句一起使用。当我们希望消除与指定模式匹配的某些记录时,它会派上用场。
- 比如说,我们将从数据库中删除所有具有实习生职位的员工。
- 只需使用指定的 LIKE 模式执行 DELETE 查询:
DELETE FROM employee WHERE Job LIKE 'trainee%';
- 现在,员工中不再有实习生
版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章链接: