sql >> Databasteknik >  >> RDS >> Mysql

Hur man skickar en sträng som en WHERE-sats i MYSQL

Prova detta:

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;

Jag tror att du måste använda @var syntax för variabler. För att utföra en fråga som är lagrad i en sträng måste du också använda PREPARE och EXECUTE .

Och du behöver inte använda UPPER på strängar. Som standard jämför MySQL strängar skiftlägesokänsligt. Du kan säkerställa det genom att titta på sorteringstypen för dina fält. ci_ de står för "case insensitive".




  1. vad är ett bra sätt att horisontell shard i postgresql

  2. CakePHP-modell med mellan datum

  3. Hur utför man en SQLite-fråga i en Android-applikation?

  4. lagras i mysql-fältet men ingen radbrytning vid eko