LIKE
子句的基本语法LIKE
子句用于在 SELECT
、UPDATE
或 DELETE
查询中进行模式匹配,以查找符合特定模式的记录。它通常与 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
子句可以用于在文本列中查找符合某种模式的数据。常见的用途包括查找包含特定子字符串的记录,或者匹配特定格式的字符串。
SELECT * FROM users WHERE email LIKE '%example%';
此查询返回所有 email
字段中包含 example
的记录。
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
相反。
SELECT * FROM users WHERE email NOT LIKE '%example%';
此查询返回所有 email
字段中不包含 example
的记录。
WHERE
和 LIKE
的查询示例SELECT * FROM users WHERE last_name LIKE '%son%';
SELECT * FROM users WHERE username LIKE 'J___';
SELECT * FROM orders WHERE order_number LIKE '%2022%';
尽管 LIKE
是进行模式匹配的强大工具,但在大数据集上使用 LIKE
查询时,性能可能会受到影响。特别是当使用 LIKE
子句以 %
开头时,数据库可能无法使用索引,从而导致全表扫描。为了提高性能,建议尽量避免使用 %
开头的模式,或者在可能的情况下使用全文索引。
如果你有更多关于 LIKE
的问题或其他查询优化相关的需求,随时告诉我!