sql >> Base de Datos >  >> RDS >> Mysql

La consulta Mysql busca una cadena en todas las columnas de una tabla

Así es como concatenaría los valores en 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;

Por supuesto, SQL dinámico no es particularmente portátil. La idea funcionaría en la mayoría de las bases de datos. El código se vería diferente.

Probado y funcionando aquí .

Y finalmente, puede hacer esto con la sustitución de variables (que es el mejor enfoque):

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;

También probado (;-).