Nếu bạn cần "kết hợp với phân biệt chữ hoa chữ thường", có một số tùy chọn, tùy thuộc vào yêu cầu chính xác của bạn.
Có thể đơn giản nhất, hãy làm cho chỉ mục biểu thức không phân biệt chữ hoa chữ thường.
Xây dựng dựa trên hàm f_unaccent()
được đặt trong câu trả lời được tham chiếu:
- PostgreSQL có hỗ trợ các ảnh ghép "không nhạy cảm với trọng âm" không?
CREATE INDEX users_lower_unaccent_name_idx ON users(lower(f_unaccent(name)));
Sau đó:
SELECT *
FROM users
WHERE lower(f_unaccent(name)) = lower(f_unaccent('João'));
Hoặc bạn có thể tạo lower()
vào hàm f_unaccent()
, để lấy một cái gì đó như f_lower_unaccent()
.
Hoặc (đặc biệt nếu bạn cần thực hiện đối sánh mẫu mờ), bạn có thể sử dụng chỉ mục bát quái được cung cấp bởi mô-đun bổ sung pg_trgm xây dựng trên chức năng trên, cũng hỗ trợ ILIKE
. Chi tiết:
- LOWER LIKE so với iLIKE
Tôi đã thêm ghi chú vào câu trả lời được tham khảo.
Hoặc bạn có thể sử dụng mô-đun bổ sung citext :
- Ràng buộc duy nhất có thể trì hoãn, không phân biệt chữ hoa chữ thường