目录

  1. LIKE 子句的基本语法
  2. LIKE 子句中的通配符
  3. 使用 LIKE 进行模糊查询
  4. LIKE 的大小写敏感性
  5. LIKE 子句与 NOT LIKE
  6. 结合 WHERELIKE 的查询示例
  7. 性能考虑
  8. 参考资料

LIKE 子句的基本语法

LIKE 子句用于在 SELECTUPDATEDELETE 查询中进行模式匹配,以查找符合特定模式的记录。它通常与 WHERE 子句一起使用来执行模糊查询。

基本语法:

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

  • column_name: 要查询的列。
  • pattern: 用于匹配数据的模式,可以使用通配符进行模糊匹配。

LIKE 子句中的通配符

LIKE 子句支持以下通配符,用于表示模糊匹配模式:

  • %:表示零个或多个字符。例如,'a%' 可以匹配任何以字母 a 开头的字符串。
  • _:表示单个字符。例如,'a_' 可以匹配任何以字母 a 开头并紧跟一个字符的字符串。

示例:LIKE 的通配符

SELECT * FROM users
WHERE username LIKE 'a%';

此查询返回所有以 a 开头的用户名。

SELECT * FROM users
WHERE username LIKE 'a_';

此查询返回所有以 a 开头并且后面只有一个字符的用户名。


使用 LIKE 进行模糊查询

LIKE 子句可以用于在文本列中查找符合某种模式的数据。常见的用途包括查找包含特定子字符串的记录,或者匹配特定格式的字符串。

示例:查找包含 ‘example’ 的电子邮件地址

SELECT * FROM users
WHERE email LIKE '%example%';

此查询返回所有 email 字段中包含 example 的记录。

示例:查找以 ‘john’ 开头的名字

SELECT * FROM users
WHERE first_name LIKE 'john%';

此查询返回所有 first_name 以 ‘john’ 开头的记录。


LIKE 的大小写敏感性

在 MySQL 中,LIKE 子句的大小写敏感性取决于所使用的字符集和排序规则。默认情况下,MySQL 使用不区分大小写的排序规则(如 utf8_general_ci),但你可以使用区分大小写的排序规则(如 utf8_bin)来进行区分大小写的匹配。

示例:使用大小写敏感排序规则查询

SELECT * FROM users
WHERE username LIKE BINARY 'Alice';

此查询会查找准确匹配 'Alice' 的用户名,而不会匹配 'alice''ALICE'


LIKE 子句与 NOT LIKE

NOT LIKE 用于排除与某模式匹配的记录,它的功能与 LIKE 相反。

示例:查询所有不包含 ‘example’ 的电子邮件地址

SELECT * FROM users
WHERE email NOT LIKE '%example%';

此查询返回所有 email 字段中不包含 example 的记录。


结合 WHERELIKE 的查询示例

示例:查找姓氏包含 ‘son’ 的用户

SELECT * FROM users
WHERE last_name LIKE '%son%';

示例:查找以 ‘J’ 开头并且长度为 4 个字符的用户名

SELECT * FROM users
WHERE username LIKE 'J___';

示例:查找包含 ‘2022’ 的订单号

SELECT * FROM orders
WHERE order_number LIKE '%2022%';


性能考虑

尽管 LIKE 是进行模式匹配的强大工具,但在大数据集上使用 LIKE 查询时,性能可能会受到影响。特别是当使用 LIKE 子句以 % 开头时,数据库可能无法使用索引,从而导致全表扫描。为了提高性能,建议尽量避免使用 % 开头的模式,或者在可能的情况下使用全文索引。


参考资料


如果你有更多关于 LIKE 的问题或其他查询优化相关的需求,随时告诉我!