En postgres puedes usar fuzzystrmatch paquete. Proporciona un levenshtein
que devuelve la distancia entre dos textos, puede realizar una coincidencia aproximada con el siguiente predicado de ejemplo:
where levenshtein(street_address, '123 Main Avex') <= 1
Esto coincidirá con todos los registros, porque la distancia entre '123 Main Ave' y '123 Main Avex' es 1 (1 inserción).
Por supuesto, valor 1
aquí hay solo un ejemplo y realizará la coincidencia de manera bastante estricta (diferencia por solo un carácter). Debería usar un número mayor o, lo que sugiere @IVO GELOV, usar la distancia relativa (distancia dividida por la longitud).