Mysql
 sql >> Datenbank >  >> RDS >> Mysql

So übergeben Sie eine Zeichenfolge als WHERE-Klausel in MYSQL

Versuchen Sie Folgendes:

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;

Ich glaube, Sie müssen den @var verwenden Syntax für Variablen. Um eine Abfrage auszuführen, die in einem String gespeichert ist, müssen Sie außerdem PREPARE verwenden und EXECUTE .

Und Sie müssen nicht UPPER verwenden auf Saiten. Standardmäßig vergleicht MySQL Strings ohne Berücksichtigung der Groß-/Kleinschreibung. Sie können dies sicherstellen, indem Sie sich den Sortierungstyp für Ihre Felder ansehen. ci_ Einsen stehen für "case insensitive".