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

Fuzzy matching en streng i SQL

I postgres kan du bruge fuzzystrmatch pakke. Det giver en levenshtein funktion, der returnerer afstanden mellem to tekster, kan du derefter udføre fuzzy matching med følgende eksemplariske prædikat:

where levenshtein(street_address, '123 Main Avex') <= 1

Dette vil matche alle poster, fordi afstanden mellem '123 Main Ave' og '123 Main Avex' er 1 (1 indsættelse).

Selvfølgelig værdi 1 her er kun et eksempel og vil udføre matchning ganske strengt (forskel med kun ét tegn). Du skal enten bruge et større tal, eller hvad @IVO GELOV foreslår - brug relativ afstand (afstand divideret med længden).



  1. Sådan nærmer du dig dilemmaet:eksportordrer fra det gamle magento-system importeres til nyt magento, overlappende id'er

  2. MySQL-udløser for at opdatere et felt til værdien af ​​id

  3. Tilføjelse af MySQL alias felter sammen

  4. Skift primær nøgle