sql >> Database >  >> RDS >> Mysql

Een string doorgeven als een WHERE-component in MYSQL

Probeer dit:

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;

Ik geloof dat je de @var . moet gebruiken syntaxis voor variabelen. Om een ​​query uit te voeren die in een string is opgeslagen, moet u ook PREPARE . gebruiken en EXECUTE .

En je hoeft UPPER niet te gebruiken op snaren. Standaard vergelijkt MySQL strings hoofdletterongevoelig. U kunt ervoor zorgen dat u naar het sorteertype voor uw velden kijkt. ci_ die staan ​​voor "hoofdlettergevoelig".




  1. Hoe de mysql-extensies van php in de docker-container inschakelen?

  2. Hoe maak je een json-formaat met group-concat mysql?

  3. MySQL:berekende kolom

  4. Transformatie van rijen naar kolommen in Oracle