sql >> Databasteknik >  >> RDS >> PostgreSQL

PostgreSQL-accent + skiftlägesokänslig sökning

Om du behöver "kombinera med skiftlägesokänslig" finns det ett antal alternativ, beroende på dina exakta krav.

Kanske enklast, gör uttrycket index skiftlägesokänsligt.

Bygger på funktionen f_unaccent() anges i det refererade svaret:

  • Stöder PostgreSQL "accentokänsliga" sammanställningar?
CREATE INDEX users_lower_unaccent_name_idx ON users(lower(f_unaccent(name)));

Sedan:

SELECT *
FROM   users
WHERE  lower(f_unaccent(name)) = lower(f_unaccent('João'));

Eller du kan bygga lower() till funktionen f_unaccent() , för att härleda något som f_lower_unaccent() .

Eller (speciellt om du ändå behöver göra suddiga mönstermatchningar) kan du använda ett trigramindex som tillhandahålls av tilläggsmodulen pg_trgm bygger på ovanstående funktion, som också stöder ILIKE . Detaljer:

  • LÄNDR LIKE vs iLIKE

Jag lade till en anteckning till det refererade svaret.

Eller du kan använda tilläggsmodulen citext :

  • Uppskjutbar, skiftlägesokänslig unik begränsning


  1. Hur REGEXP_SUBSTR() fungerar i MariaDB

  2. PostgreSQL:seriell vs identitet

  3. Filtrerade index och INKLUDERADE kolumner

  4. Hur kan man representera arv i en databas?