PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Fuzzy-Abgleich einer Zeichenfolge in SQL

In Postgres können Sie fuzzystrmatch verwenden Paket. Es liefert ein levenshtein Funktion, die den Abstand zwischen zwei Texten zurückgibt, können Sie dann einen Fuzzy-Matching mit dem folgenden beispielhaften Prädikat durchführen:

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

Dies stimmt mit allen Datensätzen überein, da der Abstand zwischen „123 Main Ave“ und „123 Main Avex“ 1 (1 Einfügung) beträgt.

Natürlich Wert 1 hier ist nur ein Beispiel und wird den Abgleich ziemlich streng durchführen (Unterschied nur um ein Zeichen). Sie sollten entweder eine größere Zahl verwenden oder, was @IVO GELOV vorschlägt, die relative Entfernung verwenden (Entfernung geteilt durch die Länge).