跳到主要内容

SQL LIKE 操作符

在 SQL 中,LIKE 操作符用于在 WHERE 子句中进行模式匹配。它允许你根据特定的模式来筛选数据,而不是精确匹配。这对于处理文本数据时非常有用,尤其是在你不知道完整值的情况下。

什么是 LIKE 操作符?

LIKE 操作符用于在 SQL 查询中匹配字符串。它通常与通配符一起使用,以便更灵活地匹配数据。LIKE 操作符支持两种通配符:

  • %:匹配任意数量的字符(包括零个字符)。
  • _:匹配单个字符。

基本语法

sql
SELECT column1, column2, ...
FROM table_name
WHERE column_name LIKE pattern;

使用 % 通配符

% 通配符用于匹配任意长度的字符序列。它可以出现在模式的任何位置。

示例 1:匹配以特定字符开头的字符串

假设我们有一个 customers 表,其中包含 name 列。我们想要查找所有以字母 "J" 开头的客户名称。

sql
SELECT name
FROM customers
WHERE name LIKE 'J%';

输入:

name
John
Jane
Alice
Jack

输出:

name
John
Jane
Jack

示例 2:匹配包含特定字符的字符串

我们想要查找所有包含字母 "an" 的客户名称。

sql
SELECT name
FROM customers
WHERE name LIKE '%an%';

输出:

name
Jane
Jack

使用 _ 通配符

_ 通配符用于匹配单个字符。

示例 3:匹配特定长度的字符串

我们想要查找所有名字长度为 4 个字符且以 "J" 开头的客户名称。

sql
SELECT name
FROM customers
WHERE name LIKE 'J___';

输出:

name
John
Jack

结合使用 % 和 _ 通配符

你可以结合使用 %_ 通配符来创建更复杂的模式。

示例 4:匹配特定模式的字符串

我们想要查找所有名字以 "J" 开头,且第三个字符为 "n" 的客户名称。

sql
SELECT name
FROM customers
WHERE name LIKE 'J_n%';

输出:

name
John
Jane

实际应用场景

场景 1:搜索产品名称

假设你有一个 products 表,其中包含 product_name 列。你想要查找所有包含 "phone" 的产品名称。

sql
SELECT product_name
FROM products
WHERE product_name LIKE '%phone%';

场景 2:查找特定格式的电子邮件

假设你有一个 users 表,其中包含 email 列。你想要查找所有以 ".com" 结尾的电子邮件地址。

sql
SELECT email
FROM users
WHERE email LIKE '%.com';

总结

LIKE 操作符是 SQL 中用于模式匹配的强大工具。通过使用 %_ 通配符,你可以灵活地筛选出符合特定模式的字符串数据。无论是查找特定前缀、后缀,还是包含特定字符的字符串,LIKE 操作符都能帮助你轻松实现。

附加资源与练习

  • 练习 1:在 employees 表中,查找所有姓氏以 "S" 开头且长度为 5 个字符的员工。
  • 练习 2:在 orders 表中,查找所有订单号以 "ORD" 开头且包含 "2023" 的订单。
提示

如果你想了解更多关于 SQL 模式匹配的内容,可以查阅 SQL 文档中关于正则表达式的部分,它提供了更强大的模式匹配功能。