sql >> Databáze >  >> RDS >> Mysql

Vyhledejte řetězec v celé tabulce v mySQL

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



  1. K čemu se v PL/pgSQL používají '$$'

  2. Vložte více záznamů do oracle

  3. Jak odstranit řádek v oracle

  4. PostgreSQL - dotaz z bash skriptu jako uživatel databáze 'postgres'