LIKE
是 SQL 中用于模糊查询的关键字,它允许你使用通配符来匹配字符串数据。常见的通配符有 %
(匹配任意数量的字符)和 _
(匹配单个字符)。例如:
SELECT * FROM users WHERE name LIKE 'John%';
这条语句会返回所有名字以 "John" 开头的用户记录。
SQL 中的大小写敏感性取决于数据库的类型和配置。一般来说,MySQL 和 PostgreSQL 是区分大小写的,而 SQLite 和 Microsoft SQL Server 在某些情况下可能不区分大小写。
在 MySQL 中,LIKE
查询默认是区分大小写的。如果你想进行不区分大小写的查询,可以使用 BINARY
关键字:
SELECT * FROM users WHERE BINARY name LIKE 'John%';
PostgreSQL 默认也是区分大小写的,但你可以使用 ILIKE
(不区分大小写的 LIKE
)来进行不区分大小写的查询:
SELECT * FROM users WHERE name ILIKE 'John%';
LIKE
提供了灵活的模糊匹配功能,适用于各种搜索需求。LIKE 'John%'
,匹配以 "John" 开头的字符串。LIKE '%John'
,匹配以 "John" 结尾的字符串。LIKE '%John%'
,匹配包含 "John" 的任意位置的字符串。LIKE
进行模糊搜索。LIKE
进行格式验证。LIKE
查询性能差?原因:LIKE
查询通常会导致全表扫描,特别是在使用 %
通配符时,数据库无法利用索引进行优化。
解决方法:
LIKE
查询。例如:LIKE
查询。例如:name
列的前 20 个字符上创建索引。%
在前:尽量避免在 LIKE
查询中使用 %
在前,例如 LIKE '%John'
,因为这会导致全表扫描。FULLTEXT
索引)。-- 创建前缀索引
CREATE INDEX idx_name ON users (name(20));
-- 使用 LIKE 进行模糊查询
SELECT * FROM users WHERE name LIKE 'John%';
-- 使用 ILIKE 进行不区分大小写的模糊查询(PostgreSQL)
SELECT * FROM users WHERE name ILIKE 'John%';
希望这些信息对你有所帮助!
领取专属 10元无门槛券
手把手带您无忧上云