sql >> Base de Datos >  >> RDS >> Mysql

Cómo pasar una cadena como una cláusula WHERE en MYSQL

Prueba esto:

SET @query = "SELECT * FROM projects WHERE ";

SET @l_project_name = CONCAT("a.project_name LIKE '%", projectName, "%'");
SET @l_project_type = CONCAT(" OR a.project_type LIKE '%", projectType, "%'");
SET @l_project_description = CONCAT(" OR a.project_description LIKE '%", projectDescription, "%'");

SET @l_full_search_clause = CONCAT(@l_project_name, @l_project_type, @l_project_description); 

SET @query = CONCAT(@query, @l_full_search_clause);

PREPARE stmt FROM @query;
EXECUTE stmt;

Creo que tienes que usar @var sintaxis para las variables. Además, para ejecutar una consulta que está almacenada en una cadena, debe usar PREPARE y EXECUTE .

Y no tienes que usar UPPER en cuerdas De forma predeterminada, MySQL compara las cadenas sin distinguir entre mayúsculas y minúsculas. Puede asegurarse de eso mirando el tipo de intercalación para sus campos. ci_ los unos significan "insensible a mayúsculas y minúsculas".