C/Visual C - busqueda

 
Vista:
sin imagen de perfil

busqueda

Publicado por lilo (14 intervenciones) el 27/07/2005 21:26:03
Hola, si pudieran responderme, les estare muy agradesido....
necesito saber coo hago para buscar una palabra dentro de un campo... por ejemplo

yo tengo una base de datos con un campo llamado NOMBRE..... en el cual, figura EJ. Juan Manuel Lopez....
ahora mi pregunta es la siguiente....
yo me coneto por el odbc y necesito tirar un listado de todos los Lopez, o bien todos los Jorge.... como hago para buscar que coincida una parte del campo....

conozco de sql, en sql sería select * from Persona where nombre like "%Lopez%" pero... como lo hago desde Visual C++ de Devian.
si pudieran responderme les estare muy agradesido.
Lilo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:busqueda

Publicado por fernando.gomez (1603 intervenciones) el 27/07/2005 21:59:34
Vaya, no sabía que Microsoft hubiese hecho una versión de Visual C++ para Linux Debian... ¿será?

En fin, la función estándar strstrse encarga de encontrar subcadenas dentro de cadenas. Su prototipo es:

char* strstr(const char* p1, const char* p2);

de donde strstr regresa un puntero a la primera coincidencia de p1 dentro de p2. Si no encuentra algo, regresa NULL.

Como sugerencia, creo que sería mejor que renormalizaras tu tabla y en lugar de un campo NOMBRE tuvieras NOMBRE y APELLIDO:

NOMBRE: Juan Manuel
APELLIDO: López

Esto por lo siguiente. Imagina que tienes a alguna persona cuyo nombre es igual al de un apellido:

NOMBRE
-------------------------------
JOHN LENNON
ELTON JOHN

Cuando busques en tu tabla, strstr regresará un puntero válido para AMBOS casos si buscas por apellido JOHN, cuando sólo debería regresarte el registro de Elton John (es decir, en John Lennon es nombre y en Elton John es apellido).

Claro, si no importa, pues adelante. También podrías evitarlo diseñando un algoritmo más complicado, donde strstr regrese un puntero válido dentro de las dos últimas palabras del registro... para lo cuál strtok también te podría ser útil.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:busqueda

Publicado por lilo (14 intervenciones) el 28/07/2005 19:51:49
Ante todo muchas gracias por tu respuesta...
Efectivamente, como comentas vos, no conozco lo que yo mismo escribi, era tarde cuando escribi el e-mail, en realidad es el Microsoft Visual Studio 6.0 (Visual c++) y no Debian.

Luego, eso de la normalización es verdad, lo que pasa es que no es realmente así, eso era un ejemplo... el tema es el siguiente, supongamos que tenemos una tabla PRODUCTOS en los cuales existe un campo Detalle, y ese Detalle puede contener en distintas tuplas una palabra comun, por ejemplo

PRODUCTOS

Numero Detalle Valor ID Proveedor
........................................................................................................................
000001 Coca Cola Light $3 0001
000002 Coca Cola Lata $3 0001
000003 Coca Cola botella $4 0001

La idea es que con solo escribir coca cola me tire todos los resultados..., puede ser que coincida al comienzo del campo, medio campo o final del campo..

Le voy a echar un vistazo a esa linea de codigo que me facilitaste.
Muchas gracias por tu respuesta...
Lisandro
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar