Búsqueda de caracteres no exacta

¿Como hago para buscar en una tabla poniendo por ejemplo en un text:
PEREZ ( y en realidad es Perez )
o
Que al poner Rodrig visualice todos los Rodriguez )
Resumiendo; que la búsqueda no sea exacta. Probé con el set exact of pero no se como emplearlo.
Desdá ya muchas gracias.
Fabricio

1 respuesta

Respuesta
1
Solución 1.
-Indexa la tabla con la llave UPPER()
INDEX ON UPPER(apellido) TO Apellido
-La busqueda toma la forma SEEK UPPER(variable)
Solución 2.
Si no desea utilizar el INDEX/SEEK, puedes usar el LOCATE
LOCATE FOR ( UPPER(variable) $ UPPER(Tabla.apellido) )
La ventaja de la segunda solución es que en el siguiente caso:
variable = "Rodrig"
LOCATE FOR ( UPPER(variable) $ UPPER(Tabla.apellido) )
Te localizaría los siguientes registros:
ROdriguez Perez
ROdriGuez gonZalez
Campos Rodriguez
Es decir, todos los que tengan en su apellido el "Rodrig" sin importar donde se localice ni como esté escrito.
La desventaja es que una búsqueda por este método es muy lenta en bases de datos muy grandes.
Bueno, eso digo yo...
¿Funcionó la solución?, en caso de no existir algún problema, favor de valorar la respuesta a fin de poder disponer de más espacio en todoexpertos.
Bueno, eso digo yo...
Disculpa la demora, estuve de viaje:
Probé con locate pero se clava en
La primera coincidencia, no se porque, quizás lo
Empleando mal.
Además yo necesito cargar todos los resultados en un grid. ¿Cómo lo implemento?
Gracias
Fabricio
Para poner los resultados en un GRID puedes usar sentencias SQL:
SELECT * FROM tabla WHERE ( UPPER(variable) $ UPPER(Tabla.apellido) ) INTO CURSOR MiCursor
Y poner el cursor como base del GRID.
Para evitar que se "clave" usando el LOCATE, puedes hacer algo similar a:
LOCATE FOR ( UPPER(variable) $ UPPER(Tabla.apellido) )
DO WHILE FOUND()
...
*comandos
...
CONTINUE
Enddo
Favor de valorar la pregunta para liberar espacio en mi página de todoexpertos.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas