PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Correspondance floue d'une chaîne en SQL

Dans postgres, vous pouvez utiliser fuzzystrmatch forfait. Il fournit un levenshtein , qui renvoie la distance entre deux textes, vous pouvez alors effectuer une correspondance floue avec l'exemple de prédicat suivant :

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

Cela correspondra à tous les enregistrements, car la distance entre '123 Main Ave' et '123 Main Avex' est de 1 (1 insertion).

Bien sûr, valeur 1 voici juste un exemple et effectuera une correspondance assez stricte (différence d'un seul caractère). Vous devez soit utiliser un nombre plus grand, soit, ce que suggère @IVO GELOV - utiliser une distance relative (distance divisée par la longueur).