Heim > Datenbank > MySQL-Tutorial > Wie kann ich MySQL effizient nutzen, um Zeilen zu finden, die mehreren Werten in einem Zeichenfolgenfeld entsprechen?

Wie kann ich MySQL effizient nutzen, um Zeilen zu finden, die mehreren Werten in einem Zeichenfolgenfeld entsprechen?

Barbara Streisand
Freigeben: 2025-01-06 05:13:43
Original
875 Leute haben es durchsucht

How Can I Efficiently Use MySQL to Find Rows Matching Multiple Values in a String Field?

Erweitern des Anwendungsbereichs des Like-Operators von MySQL

Der Like-Operator von MySQL ist ein leistungsstarkes Tool zum Abgleichen von Mustern in Zeichenfolgen. Bei komplexen Übereinstimmungskriterien mit mehreren Werten kann es jedoch manchmal zu Problemen kommen.

Betrachten Sie die folgende Abfrage, die darauf abzielt, Zeilen abzurufen, in denen das Feld „Interessen“ entweder „Sport“ oder „Pub“ (oder beides) enthält:

SELECT * FROM table WHERE interests LIKE ('%sports%', '%pub%')
Nach dem Login kopieren

Zur Überraschung vieler führt diese Abfrage nicht zu den gewünschten Ergebnissen. Der Grund liegt in der Art und Weise, wie der Like-Operator mit mehreren Mustern umgeht. Es wendet jedes Muster nacheinander an und gibt Zeilen zurück, die mit beiden Mustern übereinstimmen. In diesem Fall lautet die Abfrage effektiv wie folgt:

SELECT * FROM table WHERE interests LIKE ('%sports%') AND interests LIKE ('%pub%')
Nach dem Login kopieren

Da keiner der Interessenfeldwerte sowohl „Sport“ als auch „Kneipe“ enthält, gibt die Abfrage einen leeren Satz zurück.

Die Lösung: Alternative Matching-Techniken nutzen

Um dieses Problem zu lösen, müssen wir einen anderen Ansatz verfolgen. Die erste Möglichkeit besteht darin, die Muster mithilfe logischer Operatoren zu trennen:

SELECT * FROM table WHERE interests LIKE '%sports%' OR interests LIKE '%pub%'
Nach dem Login kopieren

Diese Abfrage gleicht effektiv Zeilen ab, die entweder „Sport“ oder „Kneipe“ im Interessenfeld enthalten.

Und noch mehr Eine effiziente Lösung ist die Verwendung des MySQL-Operators REGEXP, der es uns ermöglicht, Muster mithilfe regulärer Ausdrücke abzugleichen:

SELECT * FROM table WHERE interests REGEXP 'sports|pub'
Nach dem Login kopieren

Diese Abfrage verwendet das '|' (Pipe)-Symbol, um anzugeben, dass das Interessenfeld entweder mit „Sport“ oder „Pub“ übereinstimmen soll.

Durch den Einsatz dieser alternativen Matching-Techniken können wir die Funktionalität des Like-Operators erweitern und Zeilen abrufen, die unseren Wünschen entsprechen Kriterien.

Das obige ist der detaillierte Inhalt vonWie kann ich MySQL effizient nutzen, um Zeilen zu finden, die mehreren Werten in einem Zeichenfolgenfeld entsprechen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage