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

Mysql-forespørgsel søger efter en streng i alle kolonner i en tabel

Her er, hvordan du ville sammenkæde værdierne 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;

Selvfølgelig er dynamisk SQL ikke særlig bærbar. Ideen ville fungere i de fleste databaser. Koden ville se anderledes ud.

Testet og fungerer her .

Og endelig kan du gøre dette med variabel substitution (som er den bedste tilgang):

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;

Også testet (;-).



  1. Kan ikke udføre MySQL-tjenesten, XAMPP

  2. Beregnet felt med værdi fra en anden tabel i Microsoft Access

  3. 19 Onlineressourcer til at lære om databasedesignfejl

  4. Tilføj automatisk stigning til eksisterende kolonne uden at påvirke aktuelle postværdier