Mysql
 sql >> база данни >  >> RDS >> Mysql

Mysql заявка за търсене на низ във всички колони на таблица

Ето как бихте свързали стойностите в динамичния SQL:

set @Pattern = '%augusto%';

select @q := concat('select * from Table1 ',
                   'where concat(', group_concat(column_name), ', "") like "', @Pattern, '"'
                   )
from information_schema.columns c
where table_name = 'Table1';

prepare st from @q;
execute st;

deallocate prepare st;

Разбира се, динамичният SQL не е особено преносим. Идеята би работила в повечето бази данни. Кодът ще изглежда различно.

Тестван и работещ тук .

И накрая, можете да направите това със заместване на променливи (което е по-добрият подход):

select @q := concat('select * from Table1 ',
                   'where concat(', group_concat(column_name), ', "") like ?'
                   )
from information_schema.columns c
where table_name = 'Table1';

set @p = '%augusto%';

prepare st from @q;
execute st using @p;

deallocate prepare st;

Също така тествано (;-).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да получа данни в MySQL таблица в Java JTable?

  2. array_agg() и array_to_string на PostgreSQL в MySQL

  3. Миграция на ASP MVC MsSql към MySQL

  4. Какво не е наред с тази заявка UPDATE?

  5. Грешка при отдалечена връзка с MySQL SSL:Не може да се получи частен ключ