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).