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

Przeszukaj całą tabelę w MySQL w poszukiwaniu ciągu

Wypróbuj coś takiego:

SELECT * FROM clients WHERE CONCAT(field1, '', field2, '', fieldn) LIKE "%Mary%"

Możesz chcieć zapoznać się z dokumentacją SQL, aby uzyskać dodatkowe informacje na temat operatorów ciągów i wyrażeń regularnych.

Edycja:mogą wystąpić pewne problemy z polami NULL, więc na wszelki wypadek możesz użyć IFNULL(field_i, '') zamiast po prostu field_i

Wrażliwość na wielkość liter :Możesz użyć sortowania bez rozróżniania wielkości liter lub czegoś takiego:

... WHERE LOWER(CONCAT(...)) LIKE LOWER("%Mary%")

Wystarczy przeszukać wszystkie pola :Uważam, że nie ma sposobu na wykonanie zapytania SQL, które przeszuka wszystkie pola bez wyraźnego zadeklarowania pola do przeszukania. Powodem jest to, że istnieje teoria relacyjnych baz danych i ścisłe zasady manipulowania danymi relacyjnymi (coś jak algebra relacyjna lub codd algebra; z tego pochodzi SQL), a teoria nie zezwala na takie rzeczy, jak „po prostu przeszukaj wszystkie pola”. Oczywiście rzeczywiste zachowanie zależy od konkretnej realizacji dostawcy. Ale w powszechnym przypadku nie jest to możliwe. Aby się upewnić, zaznacz SELECT składnia operatora (WHERE konkretnie).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jaki jest dobry projekt (schemat) bazy danych obecności?

  2. Błąd podczas próby migracji postgresql db do mysql za pomocą workbench

  3. MySQL - Problem z tworzeniem funkcji zdefiniowanej przez użytkownika (UDF)

  4. mysqli_stmt::bind_result():Liczba zmiennych wiązania nie odpowiada liczbie pól w przygotowanej instrukcji

  5. Wstaw tablicę PDO używając klucza jako nazwy kolumny