sql >> Database >  >> RDS >> PostgreSQL

Fuzzy matchen met een string in SQL

In postgres kun je fuzzystrmatch . gebruiken pakket. Het bewijst een levenshtein functie, die de afstand tussen twee teksten retourneert, kunt u vervolgens fuzzy matching uitvoeren met het volgende voorbeeldige predikaat:

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

Dit komt overeen met alle records, omdat de afstand tussen '123 Main Ave' en '123 Main Avex' 1 (1 invoeging) is.

Natuurlijk, waarde 1 hier is slechts een voorbeeld en zal het matchen vrij strikt uitvoeren (verschil met slechts één teken). Je moet ofwel een groter getal gebruiken of, wat @IVO GELOV suggereert - gebruik de relatieve afstand (afstand gedeeld door de lengte).



  1. Het opspannende forest vinden (MET RECURSIVE, PostgreSQL 9.5)

  2. Python-mysql installeren met mysql van wamp

  3. Optimaliseren van code in PL/SQL. Het naar behoren maken. Code is actief maar niet correct

  4. Kan LISTAGG . niet gebruiken