sql >> Base de Datos >  >> RDS >> PostgreSQL

Coincidencia aproximada de una cadena en SQL

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