Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment passer une chaîne en tant que clause WHERE dans MYSQL

Essayez ceci :

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;

Je crois que vous devez utiliser le @var syntaxe pour les variables. De plus, pour exécuter une requête qui est stockée dans une chaîne, vous devez utiliser PREPARE et EXECUTE .

Et vous n'êtes pas obligé d'utiliser UPPER sur les cordes. Par défaut, MySQL compare les chaînes sans tenir compte de la casse. Vous pouvez vous en assurer en examinant le type de classement de vos champs. ci_ ceux signifient "insensible à la casse".