Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

buscar parte de una cadena dada

Estas en el tema de buscar parte de una cadena dada en el foro de Mysql en Foros del Web. Ey chavales. Necesito ayuda con una consulta SQL para encontrar las cadenas que estén contenidas en otra más grande. Me plantee una como esta: SELECT ...
  #1 (permalink)  
Antiguo 05/09/2012, 09:53
 
Fecha de Ingreso: agosto-2012
Ubicación: Guanajuato
Mensajes: 12
Antigüedad: 11 años, 8 meses
Puntos: 2
Pregunta buscar parte de una cadena dada

Ey chavales.

Necesito ayuda con una consulta SQL para encontrar las cadenas que estén contenidas en otra más grande. Me plantee una como esta:

SELECT cadena FROM tabla WHERE cadena IN ('Cadena de búsqueda')

El problema es que obtengo sólamente un registro, aquél cuyo campo cadena es exactamente igual que 'Cadena de búsqueda', y necesito que aparezcan también otros que pudieran tener por ejemplo sólo la palabra 'Cadena'.

¿Alguna idea?

Saludos.

Última edición por mr_mojo_risin; 05/09/2012 a las 09:57 Razón: ser cordial
  #2 (permalink)  
Antiguo 05/09/2012, 10:20
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: buscar parte de una cadena dada

Hola mr_mojo_risin:

La cláusula IN sirve sólo para encontrar coincidencias exactas, no para búsqueda de patrones, por lo que tienes que implementar otra alternativa para hacer lo que quieres...

Tienes varias opciones para elegir... en lo particular te diría que utilizaras Búsquedas te Texto completo, aunque estas búsquedas se aplican sólo a tablas MyISAM. este tipo de búsquedas tiene muchísimas características que te servirían, creo que valdría la pena que le dieras un vistazo más completo.

Otra opción, aunque menos recomendable es utilizar Búsquedas LIKE.

http://dev.mysql.com/doc/refman/5.0/...-matching.html
http://dev.mysql.com/doc/refman/5.0/...functions.html

No es muy recomendable ya que estas búsquedas son extremadamente ineficientes... la idea sería descompone tu frase en palabras atómicas, de tal manera que la condición quedara más o menos así:

Código:
.....
WHERE
cadena LIKE '%Cadena%' OR 
cadena LIKE '%de%' OR 
cadena LIKE '%búsqueda%'
.....
Te repito, estas comparaciones SON EXTREMADAMENTE INEFICIENTES, por lo que no recomiendo en absoluto su uso.

Finalmente, podrías tratar de armar una Expresión Regular aunque esta puede resultar un poco complicada de armar a partir de la cadena que introduzcas y los criterios que quieras tomar en cuenta.

Saludos
Leo.
  #3 (permalink)  
Antiguo 05/09/2012, 11:25
 
Fecha de Ingreso: agosto-2012
Ubicación: Guanajuato
Mensajes: 12
Antigüedad: 11 años, 8 meses
Puntos: 2
Pregunta Respuesta: buscar parte de una cadena dada

Gracias señor don leo.

Tu aporte me dio la respuesta.

REGEXP es como la sugerencia concreta de todo lo que venias comentando, así que la consulta que necesito queda asi:

SELECT cadena FROM tabla WHERE 'Cadena de búsqueda' REGEXP cadena

Quiero mencionar que intenté probar con los parámetros invertidos en REGEXP y obtuve lo mismo que al usar la cláusula IN, jejeje, por eso probé con esta última consulta.

Saludos men.

Etiquetas: select, subcadenas, busquedas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:16.