Jika Anda perlu "menggabungkan dengan case-sensitive", ada beberapa opsi, tergantung pada kebutuhan Anda.
Mungkin yang paling sederhana, buat ekspresi indeks huruf besar-kecil.
Membangun fungsi f_unaccent()
tercantum dalam jawaban yang dirujuk:
- Apakah PostgreSQL mendukung kumpulan "aksen tidak sensitif"?
CREATE INDEX users_lower_unaccent_name_idx ON users(lower(f_unaccent(name)));
Kemudian:
SELECT *
FROM users
WHERE lower(f_unaccent(name)) = lower(f_unaccent('João'));
Atau anda dapat membuat lower()
ke dalam fungsi f_unaccent()
, untuk mendapatkan sesuatu seperti f_lower_unaccent()
.
Atau (terutama jika Anda perlu melakukan pencocokan pola fuzzy) Anda dapat menggunakan indeks trigram yang disediakan oleh modul tambahan pg_trgm membangun fungsi di atas, yang juga mendukung ILIKE
. Detail:
- SEPERTI RENDAH vs iLIKE
Saya menambahkan catatan ke jawaban yang dirujuk.
Atau anda dapat menggunakan modul tambahan kutipan :
- Pembatasan unik yang dapat ditunda dan tidak peka huruf besar/kecil