No estoy seguro de si la BD que estes usando implemente algoritmos que comparan strings por distancia
Si lo podes implementar bajo codigo Delphi, quiza esto te sirva de ayuda:
DelphiStringDistance
Si lo queres implementar por SQL, tendrias que leer sobre
este tipo de algoritmos y ver si tu DB tiene algo similar o sino implementar una UDF o un Stored Procedure
La idea estos algoritmos es que comparas dos string, eso te devuelve un entero, que es la "distancia". La distancia es la cantidad de operaciones que se requieren para que el string A se convierta en string B. Distintos algoritmos calcularan diferentes distancias, pues asignan a las distintas operaciones (agregar/quitar/intercambiar caracter) un "peso" distinto
Si ves
estos test creo que queda mas claro de lo que hablo. Por ejemplo, usando el Algoritmo de Levenshtein, la comparacion "Casa" vs "Calle" da resultado 3.
En tu caso deberias listar solo los elementos con una distancia menor o igual a 1, esto permite una "tolerancia" de un caracter