1.ILIKE 操作符
-- ILIKE 是 PostgreSQL 特有的大小写不敏感匹配操作符
SELECT * FROM users WHERE name ILIKE 'john%';
// 自定义ILIKE查询
@Select("SELECT * FROM users WHERE name ILIKE concat('%', #{name}, '%')")
List<User> findByNameIlike(@Param("name") String name);
特点:
* PostgreSQL专有,不是标准SQL
* 支持通配符 % 和 _
* 性能比正则表达式好
* 不需要额外的函数调用
2.LOWER/UPPER 函数
-- 使用 LOWER 函数
SELECT * FROM users WHERE LOWER(name) = LOWER('John');
-- 使用 UPPER 函数
SELECT * FROM users WHERE UPPER(name) = UPPER('John');
// 使用LOWER函数查询
@Select("SELECT * FROM users WHERE LOWER(name) = LOWER(#{name})")
List<User> findByNameIgnoreCase(@Param("name") String name);
创建大小写不敏感的索引
-- 创建基于 LOWER 函数的索引
CREATE INDEX idx_name_lower ON users (LOWER(name));
-- 使用索引的查询
SELECT * FROM users WHERE LOWER(name) = LOWER('John');
特点:
* 标准SQL,可移植性好
* 可能影响索引使用
* 需要对每一行数据进行函数运算
* 如果经常使用,建议创建函数索引