not distinto mysql sql-like

distinto - mysql select not null



Usando OR en LIKE Query en MySQL para comparar mĂșltiples campos (2)

Siempre pensé que podrías usar OR en una declaración LIKE para consultar cosas en MySQL. Entonces, si quisiera comparar varios campos seguidos con 1 palabra clave o término:

SELECT * FROM MyTable WHERE Column1 OR Column2 LIKE ''%keyword%'';

y si tuviera una serie de palabras para comparar:

SELECT * FROM MyTable WHERE Column1 OR Column2 LIKE ''%keyword1%'' AND Column1 OR Column2 LIKE ''%keyword2%'';

Sin embargo, no creo que la sintaxis sea correcta. ¿Existe un método eficiente para escribir esto aparte de algo como:

SELECT * FROM MyTable WHERE Column1 LIKE ''%keyword1%'' OR Column2 LIKE ''%keyword1%'' AND Column1 LIKE ''%keyword2%'' OR Column2 LIKE ''%keyword2%'';

¿Estoy haciendo esto correctamente?


Lo más cercano a la sintaxis que deseas es:

SELECT * FROM MyTable WHERE (CONCAT(Column1, Column2) LIKE ''%keyword1%'') AND (CONCAT(Column1, Column2) LIKE ''%keyword2%'')

Nota: que el "%" al comienzo de su cadena de búsqueda excluye el uso de índices. Si hay una gran cantidad de registros para buscar, sería mejor repensar la implementación.


Utilizar esta::

SELECT * FROM MyTable WHERE (Column1 LIKE ''%keyword1%'' OR Column2 LIKE ''%keyword1%'') AND (Column1 LIKE ''%keyword2%'' OR Column2 LIKE ''%keyword2%'');