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

Sådan sender du en streng som en WHERE-sætning i MYSQL

Prøv dette:

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;

Jeg tror, ​​du skal bruge @var syntaks for variabler. For at udføre en forespørgsel, der er gemt i en streng, skal du også bruge PREPARE og EXECUTE .

Og du behøver ikke bruge UPPER på strenge. Som standard sammenligner MySQL strenge uafhængigt af store og små bogstaver. Det kan du sikre dig ved at se på sorteringstypen for dine felter. ci_ dem står for "case insensitive".




  1. Forklar venligst MySQL Joins i et enkelt sprog

  2. Hvordan henter man et billede fra en SQLite-database?

  3. Hvordan kører man en MYSQL-forespørgsel på et foruddefineret fast tidspunkt?

  4. Hvordan man optimerer smerteligt langsom MySQL-forespørgsel, der finder korrelationer