sql >> Database teknologi >  >> RDS >> PostgreSQL

PostgreSQL accent + ufølsom søgning

Hvis du har brug for at "kombinere med store og små bogstaver", er der en række muligheder, afhængigt af dine præcise krav.

Måske enklest, gør udtrykket indeks store og små bogstaver.

Bygger på funktionen f_unaccent() anført i det refererede svar:

  • Understøtter PostgreSQL "accentufølsomme" sammenstillinger?
CREATE INDEX users_lower_unaccent_name_idx ON users(lower(f_unaccent(name)));

Så:

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

Eller du kunne bygge lower() ind i funktionen f_unaccent() , for at udlede noget som f_lower_unaccent() .

Eller (især hvis du alligevel skal lave fuzzy mønstermatching) kan du bruge et trigramindeks fra det ekstra modul pg_trgm bygger på ovenstående funktion, som også understøtter ILIKE . Detaljer:

  • NEDRE LIKE vs iLIKE

Jeg tilføjede en note til det refererede svar.

Eller du kan bruge det ekstra modul citext :

  • Udskydbar unik begrænsning, der ikke skelner mellem store og små bogstaver


  1. Hvordan RTRIM_ORACLE() virker i MariaDB

  2. PostgreSQL proceduresprog C ikke fundet

  3. Hvordan rydder man ODP.NET-forbindelsespuljen ved forbindelsesfejl?

  4. MySQL antal elementer i klausulen