Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak przekazać ciąg znaków jako klauzulę WHERE w MYSQL?

Spróbuj tego:

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;

Uważam, że musisz użyć @var składnia zmiennych. Ponadto, aby wykonać zapytanie, które jest przechowywane w ciągu, musisz użyć PREPARE i EXECUTE .

I nie musisz używać UPPER na strunach. Domyślnie MySQL porównuje ciągi bez uwzględniania wielkości liter. Możesz to sprawdzić, patrząc na pola typu sortowania. ci_ te oznaczają „niewrażliwy na wielkość liter”.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Optymalizacja MySQL ORDER BY na kalkulacji udostępnionej WHERE

  2. Jak naprawić błąd klucza obcego podczas uruchamiania migracji

  3. MySQL- serwer Wamp nie działa po aktualizacji do win10

  4. Jak zabezpieczyć serwery MySQL/MariaDB

  5. PHP i MySQL z przyciskiem Usuń na tej samej stronie