Comunidad de diseño web y desarrollo en internet online

buscar elementos de una cadena en otra

Citar            
MensajeEscrito el 26 Oct 2011 02:14 pm
que tal !!

Tengo una duda referente a mysql espero que me puedan ayudar
Les comento el caso:

Tengo en un registro un campo con este dato
1,2,3 (así separados por coma)

entonces quiero eliminar todos los registros donde "al menos un elemento" de la cadena coincida
es posible esto y como lo podría hacer??

Saludos y gracias de antemano

Por pakorttu01

5 de clabLevel



 

chrome
Citar            
MensajeEscrito el 26 Oct 2011 03:32 pm
Para entender mejor el problema.

Supongamos que un registro contiene este dato:

Código :

1,2,3,23

Y la coincidencia buscada es "3". Pregunta: ¿ese registro tiene dos coincidencias o solo una?, porque la subcadena "3" del registro coincide pero "23" también.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 26 Oct 2011 03:58 pm
gracias por contestar

Digamos que el limitador es la coma enotnces con que encuentre cualquiera de los 4 datos que pones debe descartar el resgitro

Por pakorttu01

5 de clabLevel



 

chrome
Citar            
MensajeEscrito el 26 Oct 2011 04:54 pm
Es que no me respondes la pregunta. En el caso expuesto son dos coincidencias o solo una?

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 26 Oct 2011 05:11 pm
perdon en ese caso solo seria solo una coincidencia

Por pakorttu01

5 de clabLevel



 

chrome
Citar            
MensajeEscrito el 26 Oct 2011 08:43 pm
Entonces lo que buscas es un valor numérico en una cadena.
Si fuera en PHP sería fácil, en SQL de MySQL es otro cantar... Voy a probar un par de cosas y regreso :)

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 26 Oct 2011 09:17 pm
ok!! gracias aún así seguiré intentándolo

Por pakorttu01

5 de clabLevel



 

chrome
Citar            
MensajeEscrito el 27 Oct 2011 01:33 pm
Bueno pues aunque el código es sencillo no es fácil de encontrar en la documentación... al menos para mi:

Código MySQL :

SELECT * FROM `tabla` WHERE `campo` REGEXP '(^|,)+3($|,)+';

Eso devolverá todos los registros que en el campo 'campo' contengan el caracter '3' que esté al inicio o inmediatamente después de una coma y además esté al final o inmediatamente antes de una coma por lo que si en el campo 'campo' hay un '23' no habrá coincidencia ya que el caracter '3' no está precedido por el inicio ni por una coma.

Por supuesto, puedes cambiar el '3' por una variable PHP:

Código PHP :

$numero = 3;
$sql = "SELECT * FROM `tabla` WHERE `campo` REGEXP '(^|,)+".$numero."($|,)+';"

Y servirá para cualquier número que estés buscando.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 28 Oct 2011 01:53 pm
Gracias por contestar!!

no había utilizado REGEXP y se ve muy ultil para algunos casos , aunque creo que en el mio al menos en este ejemplo segun entiendo estaría buscando cualquier registro donde coincida el #3 pero como ponía en un principio la idea esque pueda buscar cualquiera de un campo tipo "1,3,4,5,20,...." y devuelva los registros donde al menos encuentre uno de estos entonces creo que ahí es donde se vuelve complejo porque tendría que hacer algo parecido al ejemplo que me mandas pero con cada uno de los números, y en este caso solo es un query no estoy ocupando php :S

Aún así agradezco mucho tu respuesta y trataré de adaptar de alguna manera la solución que me propones

Saludos!!

Por pakorttu01

5 de clabLevel



 

chrome
Citar            
MensajeEscrito el 28 Oct 2011 04:47 pm

Por DriverOp

Claber

2510 de clabLevel



 

opera

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.