Zkuste něco takového:
SELECT * FROM clients WHERE CONCAT(field1, '', field2, '', fieldn) LIKE "%Mary%"
Další informace o řetězcových operátorech a regulárních výrazech naleznete v dokumentech SQL.
Edit:Mohou se vyskytnout nějaké problémy s NULL poli, takže pro případ, že budete chtít použít IFNULL(field_i, '')
místo pouze field_i
Rozlišování malých a velkých písmen :Můžete použít třídění bez rozlišení malých a velkých písmen nebo něco takového:
... WHERE LOWER(CONCAT(...)) LIKE LOWER("%Mary%")
Prohledejte všechna pole :Domnívám se, že neexistuje způsob, jak vytvořit SQL-dotaz, který bude prohledávat všechna pole, aniž by explicitně deklaroval pole k vyhledávání. Důvodem je, že existuje teorie relačních databází a přísná pravidla pro manipulaci s relačními daty (něco jako relační algebra nebo codd algebra; od toho je SQL) a teorie neumožňuje věci jako "prostě prohledat všechna pole". Skutečné chování samozřejmě závisí na konkrétní realizaci prodejce. Ale v běžném případě to není možné. Pro jistotu zaškrtněte SELECT
syntaxe operátoru (WHERE
sekce, abych byl přesný).