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%')
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%')
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%'
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'
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!