Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Pesquise uma tabela inteira no mySQL por uma string


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

Você pode querer ver documentos SQL para obter informações adicionais sobre operadores de string e expressões regulares.

Editar:pode haver alguns problemas com campos NULL, portanto, caso você queira usar IFNULL(field_i, '') em vez de apenas field_i

Sensibilidade a maiúsculas :Você pode usar o agrupamento que não diferencia maiúsculas de minúsculas ou algo assim:
... WHERE LOWER(CONCAT(...)) LIKE LOWER("%Mary%")

Basta pesquisar todos os campos :acredito que não há como fazer uma consulta SQL que pesquise em todos os campos sem declarar explicitamente o campo para pesquisar. A razão é que existe uma teoria de bancos de dados relacionais e regras estritas para manipular dados relacionais (algo como álgebra relacional ou codd álgebra; é daí que vem o SQL), e a teoria não permite coisas como "apenas pesquise todos os campos". É claro que o comportamento real depende da realização concreta do fornecedor. Mas no caso comum não é possível. Para ter certeza, marque SELECT sintaxe do operador (WHERE seção, para ser preciso).