Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como passar uma string como uma cláusula WHERE no MYSQL


Tente isto:
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;

Eu acredito que você tem que usar o @var sintaxe para variáveis. Além disso, para executar uma consulta armazenada em uma string, você deve usar PREPARE e EXECUTE .

E você não precisa usar UPPER em cordas. Por padrão, o MySQL compara strings sem distinção entre maiúsculas e minúsculas. Você pode garantir isso observando o tipo de agrupamento para seus campos. ci_ os significam "insensível a maiúsculas e minúsculas".