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

Fuzzy che corrisponde a una stringa in SQL

In postgres puoi usare fuzzystrmatch pacchetto. Fornisce un levenshtein funzione, che restituisce la distanza tra due testi, puoi quindi eseguire la corrispondenza fuzzy con il seguente predicato esemplificativo:

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

Questo corrisponderà a tutti i record, perché la distanza tra "123 Main Ave" e "123 Main Avex" è 1 (1 inserimento).

Naturalmente, valore 1 qui è solo un esempio e eseguirà la corrispondenza in modo abbastanza rigoroso (differenza di un solo carattere). Dovresti utilizzare un numero maggiore o, come suggerisce @IVO GELOV, utilizzare la distanza relativa (distanza divisa per la lunghezza).