Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Zapytanie Mysql przeszukuje ciąg znaków we wszystkich kolumnach tabeli

Oto jak połączyć wartości w dynamicznym 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;

Oczywiście dynamiczny SQL nie jest szczególnie przenośny. Pomysł zadziałałby w większości baz danych. Kod wyglądałby inaczej.

Przetestowane i działające tutaj .

I na koniec możesz to zrobić za pomocą podstawiania zmiennych (co jest lepszym podejściem):

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;

Przetestowano również (;-).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak zrobić wstawkę wsadową w MySQL

  2. Przyznaj uprawnienie select do wierszy z warunkiem

  3. jak wyświetlić odpowiedni rekord z dostępu na podstawie innej kolumny w Datagrid w vb6?

  4. Pokazywanie wartości rozwijanych oddzielonych przecinkami z kolumny w bazie danych

  5. Jak ukryć kolumnę w polu listy winform?