sql >> Databáze >  >> RDS >> PostgreSQL

Fuzzy párování řetězce v SQL

V postgresu můžete použít fuzzystrmatch balík. Poskytuje levenshtein funkce, která vrací vzdálenost mezi dvěma texty, pak můžete provést fuzzy párování s následujícím příkladným predikátem:

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

To bude odpovídat všem záznamům, protože vzdálenost mezi '123 Main Ave' a '123 Main Avex' je 1 (1 vložení).

Samozřejmě hodnota 1 zde je pouze příklad a bude provádět párování poměrně striktně (rozdíl pouze o jeden znak). Měli byste buď použít větší číslo, nebo, jak navrhuje @IVO GELOV - použít relativní vzdálenost (vzdálenost dělená délkou).



  1. Cizí klíč Oracle

  2. Oracle sql:pořadí podle a odlišné klauzule

  3. Problém s řazením Postgres

  4. Dotaz Python SQLAlchemy:AttributeError:Objekt 'Connection' nemá žádný atribut 'contextual_connect'