Mysql
 sql >> Database >  >> RDS >> Mysql

Come passare una stringa come clausola WHERE in MySQL

Prova questo:

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;

Credo che tu debba usare @var sintassi per le variabili. Inoltre, per eseguire una query memorizzata in una stringa, devi usare PREPARE e EXECUTE .

E non devi usare UPPER sulle corde. Per impostazione predefinita, MySQL confronta le stringhe senza distinzione tra maiuscole e minuscole. Puoi assicurarti che esaminando il tipo di confronto per i tuoi campi. ci_ quelli stanno per "senza distinzione tra maiuscole e minuscole".