Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL-Abfrage sucht eine Zeichenfolge in allen Spalten einer Tabelle

So würden Sie die Werte in dynamischem SQL verketten:

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;

Natürlich ist dynamisches SQL nicht besonders portabel. Die Idee würde in den meisten Datenbanken funktionieren. Der Code würde anders aussehen.

Getestet und funktioniert hier .

Und schließlich können Sie dies mit Variablensubstitution tun (was der bessere Ansatz ist):

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;

Auch getestet (;-).