PostgreSQL中忽略大小写

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,可移植性好
* 可能影响索引使用
* 需要对每一行数据进行函数运算
* 如果经常使用,建议创建函数索引
posted @ 2025-05-28 10:48  愚昧小生  阅读(368)  评论(0)    收藏  举报