MySQL SELECT LIKE o REGEXP para unir múltiples palabras en un registro

La table campo. name contiene ‘Stylus Photo 2100’ y con la siguiente consulta

 SELECT `name` FROM `table` WHERE `name` LIKE '%Stylus 2100%' 

No obtengo resultados Por supuesto que lo haría si busqué

 SELECT `name` FROM `table` WHERE `name` LIKE '%Photo 2100%' 

¿Cómo puedo seleccionar el registro buscando “Stylus 2100”?

Gracias

Bueno, si conoces el orden de tus palabras … puedes usar:

 SELECT `name` FROM `table` WHERE `name` REGEXP 'Stylus.+2100' 

También puedes usar:

 SELECT `name` FROM `table` WHERE `name` LIKE '%Stylus%' AND `name` LIKE '%2100%' 

Creo que la mejor solución sería usar expresiones regulares. Es más limpio y probablemente el más efectivo. Las expresiones regulares son compatibles con todos los motores de DB comúnmente utilizados.

En MySql hay RLIKE operador RLIKE por lo que su consulta sería algo así como:
SELECT * FROM buckets WHERE bucketname RLIKE 'Stylus|2100'
No soy muy fuerte en expresiones regulares, así que espero que la expresión esté bien.

Editar
El RegExp debería ser:

 SELECT * FROM buckets WHERE bucketname RLIKE '(?=.*Stylus)(?=.*2100)' 

Más sobre el soporte de MySql regexp:
http://dev.mysql.com/doc/refman/5.1/en/regexp.html#operator_regexp

Puedes simplemente reemplazar cada espacio con %

 SELECT `name` FROM `table` WHERE `name` LIKE '%Stylus%2100%' 

La solución correcta es una búsqueda de texto completo (si puede usarla) https://dev.mysql.com/doc/refman/5.1/en/fulltext-search.html

Esto casi hace lo que quieres:

 SELECT * FROM buckets WHERE bucketname RLIKE '(Stylus|2100)+.*(Stylus|2100)+'; SELECT * FROM buckets WHERE bucketname RLIKE '(Stylus|2100|photo)+.*(Stylus|2100|photo)+.*(Stylus|2100|photo)+.*'; 

Pero esto también coincidirá con “210021002100”, que no es genial.

echa un vistazo a http://www.techonthenet.com/sql/like.php

con LIKE ‘% Stylus 2100%’, pide una cadena que contenga exactamente ‘Stylus 2100’, y ‘Stylus Photo 2100’ no contiene esa cadena, hay ‘Foto’ adentro;

necesitas hacer algo como esto,

 SELECT * FROM buckets WHERE bucketname RLIKE 'Stylus.*2100'; 

o

 SELECT * FROM buckets WHERE bucketname RLIKE '(Stylus)+.*(2100)+';