Mysql
 sql >> Database >  >> RDS >> Mysql

La query MySQL ricerca una stringa in tutte le colonne di una tabella

Ecco come concatenare i valori in SQL dinamico:

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;

Naturalmente, SQL dinamico non è particolarmente portabile. L'idea funzionerebbe nella maggior parte dei database. Il codice sarebbe diverso.

Testato e funzionante qui .

E infine, puoi farlo con la sostituzione delle variabili (che è l'approccio migliore):

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;

Testato anche (;-).