Wenn Sie "mit Groß- und Kleinschreibung kombinieren" müssen, gibt es eine Reihe von Optionen, abhängig von Ihren genauen Anforderungen.
Am einfachsten ist es vielleicht, die Groß-/Kleinschreibung des Ausdrucksindex zu ignorieren.
Aufbauend auf der Funktion f_unaccent()
in der referenzierten Antwort dargelegt:
- Unterstützt PostgreSQL "akzentunabhängige" Sortierungen?
CREATE INDEX users_lower_unaccent_name_idx ON users(lower(f_unaccent(name)));
Dann:
SELECT *
FROM users
WHERE lower(f_unaccent(name)) = lower(f_unaccent('João'));
Oder Sie könnten lower()
erstellen in die Funktion f_unaccent()
, um so etwas wie f_lower_unaccent()
abzuleiten .
Oder (insbesondere wenn Sie ohnehin einen Fuzzy-Pattern-Matching durchführen müssen) können Sie einen Trigram-Index verwenden, der vom zusätzlichen Modul pg_trgm bereitgestellt wird Aufbauend auf obiger Funktion, die auch ILIKE
unterstützt . Einzelheiten:
- LOWER LIKE vs. iLIKE
Ich habe der referenzierten Antwort eine Notiz hinzugefügt.
Oder Sie könnten das zusätzliche Modul citext verwenden :
- Aufschiebbare, eindeutige Einschränkung ohne Berücksichtigung der Groß-/Kleinschreibung