Puedes hacer:
Código PHP:
$sql="SELECT * FROM tabla WHERE campo LIKE (%".$valor."%)";
Pero tal vez eso te dé problemas con por ejemplo: 11,21,312321 (si buscas "1" .. ).
Para estos casos .. sería ideal que pensases en "normalizar" mas tu Base de datos .. guardando esos valores en una tabla extra relacionada con esta que ya usas por su "ID" (identificador único) que uses.
Si no puedes hacer eso (que sería altamente recomendable por el rendimiento de tu própia aplicación) .. te va a tocar lo más probable a recorrer todos esos resultados y "via PHP" ir biendo si el registro en cuestión tiene tu resultado (con tu in_array() )
Código PHP:
$resultado=mysql_query("SELECT * FROM tabla");
while ($registro=mysql_fetch_array($resultado)){
// convertir tu string en un array ..
$array_campo = implode(",", $registro['campo']);
// aplicar in_array() ...
if (in_array("2", $array_campo));
echo "Se encontró 2. en: ".$registro['id_o_nombre_como_lo_identifiques']."<br>";
}
}
Esta solución sin bien debe funcionar no es NADA optimo .. SI ya usas Base de datos .. usalas "bien" para eso .. en estos casos es necesario empezar a "normalizar" ...
Un saludo,