Ver Mensaje Individual
  #6 (permalink)  
Antiguo 25/06/2011, 19:11
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años, 1 mes
Puntos: 2658
Respuesta: Sentencia para buscar CAMPO en cadena

Cita:
Estoy utilizando el CONCAT para agregar el separador _ , ya que guardo en la variable antes _1__2_ y así sucesivamente...y si le doy que busque 1, puede "dar positivo" en un _11__12_ thx!
Lo que pasa es que estás complicando las cosas innecesariamente.
Si el campo contiene "1", "11" o "12", y lo que quieres hacer es buscar aquellos casos en los que ese campo está dentro de un conjunto de valores, estás usando la función y el método equivocado.
Eso se hace más o menos así:
Código MySQL:
Ver original
  1. SELECT tabla_id
  2. FROM grupo_users
  3.     tabla_id IN('1','2','11','13','14') AND uid<>'$mi_id'
Donde cada valor posible se pone en el paréntesis, separado por coma de los demás. Esta sentencia, a nivel de PHP se construye dinámicamente con los valores seleccionados.
En el caso de querer tomar una sola variable que contenga los valores, para buscar uno entre varios, lo mejor es usar una variable que los contenga así: "1, 2, 3, 11, 13, 14", y usar la función FIND_IN_SET():
Código MySQL:
Ver original
  1. FROM tabla
  2. WHERE FIND_IN_SET(COLUMNA, $variable)>0;

FIND_IN_SET() devuelve el número de la posición del valor donde se encontró el buscado, o cero, si no está.

Ejemplo:
Código MySQL:
Ver original
  1. mysql> SELECT FIND_IN_SET('14','1,2,3,4,6,13,14,34') posicion;
  2. +----------+
  3. | posicion |
  4. +----------+
  5. |        7 |
  6. +----------+
  7. 1 row in set (0.00 sec)
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)