Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Consulta MySQL pesquisa uma string em todas as colunas de uma tabela


Aqui está como você concatenaria os valores no SQL dinâmico:
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;

Claro, SQL dinâmico não é particularmente portátil. A ideia funcionaria na maioria dos bancos de dados. O código ficaria diferente.

Testado e funcionando aqui .

E, finalmente, você pode fazer isso com substituição de variável (que é a melhor abordagem):
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;

Também testado (;-).