sql >> Databasteknik >  >> RDS >> Mysql

Mysql-fråga söker en sträng i alla kolumner i en tabell

Så här skulle du sammanfoga värdena i dynamisk SQL:

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;

Naturligtvis är dynamisk SQL inte särskilt portabel. Idén skulle fungera i de flesta databaser. Koden skulle se annorlunda ut.

Testat och fungerar här .

Och slutligen kan du göra detta med variabel substitution (vilket är det bättre tillvägagångssättet):

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;

Testade även (;-).



  1. Läs CSV/Excel-filer från SFTP-fil, gör några ändringar i dessa filer med Pandas och spara tillbaka

  2. Microsoft SQL Server till Oracle Data Migration (konvertering) (Andra RDBMS ok, också)

  3. PostgreSQL-tjänsten kan inte stoppa/starta/starta om

  4. FEL på rad:PL/SQL:SQL-sats ignoreras. medan du skapar/ersätter paketets kropp