Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Durchsuchen Sie eine ganze Tabelle in mySQL nach einem String

Probieren Sie so etwas aus:

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

Weitere Informationen zu Zeichenfolgenoperatoren und regulären Ausdrücken finden Sie in der SQL-Dokumentation.

Bearbeiten:Es kann einige Probleme mit NULL-Feldern geben, also nur für den Fall, dass Sie IFNULL(field_i, '') verwenden möchten statt nur field_i

Groß-/Kleinschreibung :Sie können die Sortierung ohne Berücksichtigung der Groß-/Kleinschreibung oder so ähnlich verwenden:

... WHERE LOWER(CONCAT(...)) LIKE LOWER("%Mary%")

Einfach alle Felder durchsuchen :Ich glaube, es gibt keine Möglichkeit, eine SQL-Abfrage zu erstellen, die alle Felder durchsucht, ohne das zu durchsuchende Feld explizit zu deklarieren. Der Grund dafür ist, dass es eine Theorie relationaler Datenbanken und strenge Regeln für die Manipulation relationaler Daten gibt (so etwas wie relationale Algebra oder codd algebra; davon stammt SQL ab), und die Theorie erlaubt keine Dinge wie "einfach alle Felder durchsuchen". Natürlich hängt das tatsächliche Verhalten von der konkreten Umsetzung des Anbieters ab. Aber im Normalfall ist es nicht möglich. Um sicherzugehen, aktivieren Sie SELECT Operatorsyntax (WHERE Abschnitt, um genau zu sein).