PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Fuzzy combinando uma string no SQL


No postgres você pode usar fuzzystrmatch pacote. Ele fornece um levenshtein função, que retorna a distância entre dois textos, você pode executar a correspondência difusa com o seguinte predicado exemplar:
where levenshtein(street_address, '123 Main Avex') <= 1

Isso corresponderá a todos os registros, porque a distância entre '123 Main Ave' e '123 Main Avex' é 1 (1 inserção).

Claro, valor 1 aqui é apenas um exemplo e executará a correspondência de maneira bastante rigorosa (diferença por apenas um caractere). Você deve usar um número maior ou, o que @IVO GELOV sugere - use a distância relativa (distância dividida pelo comprimento).