sql >> Database >  >> RDS >> Mysql

Mysql-query doorzoek een tekenreeks in alle kolommen van een tabel

Hier ziet u hoe u de waarden in dynamische SQL samenvoegt:

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;

Dynamische SQL is natuurlijk niet bijzonder draagbaar. Het idee zou in de meeste databases werken. De code zou er anders uitzien.

hier getest en werkt .

En tot slot kun je dit doen met variabele substitutie (wat de betere benadering is):

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;

Ook getest (;-).



  1. De beste manier om tags voor snelheid op te slaan in een enorme tabel

  2. Hoe de sortering van een kolom in SQL Server (T-SQL) te tonen

  3. SQL-BEPERKINGEN

  4. Mysql + where-clausule die overeenkomt met meerdere rijen