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).