Mysql
 sql >> Base de données >  >> RDS >> Mysql

La requête MySQL recherche une chaîne dans toutes les colonnes d'une table

Voici comment concaténer les valeurs en SQL dynamique :

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;

Bien sûr, le SQL dynamique n'est pas particulièrement portable. L'idée fonctionnerait dans la plupart des bases de données. Le code serait différent.

Testé et fonctionnel ici .

Et enfin, vous pouvez le faire avec la substitution de variable (ce qui est la meilleure approche) :

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;

Testé également (;-).