PostgreSQL LIKE 操作符
什么是 LIKE?
LIKE 操作符用于 WHERE 子句中,用于搜索列中的指定模式。它是 PostgreSQL 中模式匹配和文本搜索的重要工具。
基本语法
通配符
PostgreSQL LIKE 支持两个通配符:
基本 LIKE 示例
示例 1:以...开头
示例 2:以...结尾
示例 3:包含
示例 4:使用下划线匹配精确长度
组合通配符
大小写敏感性
LIKE(区分大小写)
ILIKE(不区分大小写)
NOT LIKE
查找不匹配模式的行:
转义特殊字符
当需要搜索字面的 % 或 _ 字符时:
LIKE 与多个条件
OR 条件
AND 条件
性能优化
1. 前导通配符性能
2. 使用索引
3. 全文搜索替代方案
对于复杂的文本搜索,考虑使用全文搜索:
实际应用示例
示例 1:邮箱验证
示例 2:电话号码模式
示例 3:产品搜索
示例 4:文件管理
LIKE 与其他子句
与 JOIN
与 GROUP BY
与子查询
高级模式
模式 1:多词搜索
模式 2:排除模式
模式 3:复杂邮箱过滤
SIMILAR TO(SQL 标准)
PostgreSQL 还支持 SIMILAR TO 用于类似正则表达式的模式:
正则表达式(更强大)
对于复杂模式,使用正则表达式操作符:
常见错误和解决方案
错误 1:忘记通配符
错误 2:大小写敏感性问题
错误 3:前导通配符的性能问题
最佳实践
- 使用 ILIKE 进行不区分大小写搜索:比使用 LOWER() 与 LIKE 更易读
- 避免前导通配符:它们会阻止索引使用
- 创建适当的索引:对不区分大小写的搜索使用表达式索引
- 考虑全文搜索:用于复杂的文本搜索
- 转义特殊字符:搜索字面
%或_时 - 使用特定模式:更具体的模式更快
- 测试性能:使用 EXPLAIN ANALYZE 分析查询
总结
LIKE 操作符是模式匹配的重要工具:
- 使用
%(零个或多个字符)和_(恰好一个字符) - LIKE 区分大小写,ILIKE 不区分大小写
- NOT LIKE 排除匹配的模式
- 前导通配符会阻止索引使用
- 对于复杂模式考虑使用全文搜索
- 使用 ESCAPE 转义字面通配符
- 正则表达式提供更强大的模式匹配
掌握 LIKE 对于在 PostgreSQL 中进行有效的文本搜索和过滤至关重要。