Essayez quelque chose comme ceci :
SELECT * FROM clients WHERE CONCAT(field1, '', field2, '', fieldn) LIKE "%Mary%"
Vous voudrez peut-être consulter la documentation SQL pour plus d'informations sur les opérateurs de chaîne et les expressions régulières.
Modifier :il peut y avoir des problèmes avec les champs NULL, donc juste au cas où vous voudriez utiliser IFNULL(field_i, '')
au lieu de simplement field_i
Respect de la casse :Vous pouvez utiliser un classement insensible à la casse ou quelque chose comme ceci :
... WHERE LOWER(CONCAT(...)) LIKE LOWER("%Mary%")
Il suffit de rechercher dans tous les champs :Je crois qu'il n'y a aucun moyen de faire une requête SQL qui recherchera dans tous les champs sans déclarer explicitement le champ dans lequel effectuer la recherche. La raison en est qu'il existe une théorie des bases de données relationnelles et des règles strictes pour manipuler les données relationnelles (quelque chose comme l'algèbre relationnelle ou codd algèbre ; c'est de là que vient SQL), et la théorie n'autorise pas des choses telles que "rechercher simplement tous les champs". Bien sûr, le comportement réel dépend de la réalisation concrète du vendeur. Mais dans le cas courant, ce n'est pas possible. Pour vous en assurer, cochez SELECT
syntaxe de l'opérateur (WHERE
section, pour être précis).