Mehrere Werte in MySQL-LIKE-Abfragen
In Datenbanken wird der LIKE-Operator häufig verwendet, um Muster in Zeichenfolgen abzugleichen. Allerdings kann es schwierig werden, wenn Sie Übereinstimmungen für mehrere Werte in einem einzelnen Feld finden müssen. In diesem Artikel wird das Problem der Abfrage mehrerer Werte mit dem LIKE-Operator in MySQL untersucht.
Warum die LIKE-Abfrage nicht funktioniert
Gemäß Ihrer bereitgestellten Abfrage:
SELECT * FROM table WHERE interests LIKE ('%sports%', '%pub%')
Diese Abfrage versucht, Zeilen abzurufen, in denen das Feld „Interessen“ entweder „Sport“ oder „Pub“ oder beides enthält. Es kann jedoch sein, dass dadurch nicht die gewünschten Ergebnisse erzielt werden, da LIKE nacheinander prüft, ob die angegebenen Muster vorhanden sind. In diesem Fall wird zuerst nach „%sports%“ gesucht, das in allen Zeilen vorhanden ist, und dann nach „%pub%“, das nur in einer Zeile vorhanden ist. Sie erhalten also nur die Zeile, die sowohl „Sport“ als auch „Pub“ enthält.
Schnellere und effizientere Lösungen
Anstatt LIKE mit mehreren Mustern zu verwenden, Betrachten Sie die folgenden Alternativen:
ODER Logisch Operator:
WHERE interests LIKE '%sports%' OR interests LIKE '%pub%'
Diese Abfrage verwendet den logischen OR-Operator, um zwei LIKE-Anweisungen zu kombinieren. Es werden alle Zeilen zurückgegeben, die mit einem der Muster übereinstimmen. Diese Methode ist im Allgemeinen schneller als LIKE mit mehreren Mustern.
REGEXP Regulärer Ausdruck:
WHERE interests REGEXP 'sports|pub'
Mit dem REGEXP-Operator können Sie nach regulären Ausdrücken suchen. In diesem Fall bedeutet der Ausdruck „sports|pub“, dass Übereinstimmungen für „sports“ oder „pub“ gefunden werden. REGEXP kann ein leistungsstarkes Werkzeug für den komplexeren Mustervergleich sein.
Referenzlinks:
Das obige ist der detaillierte Inhalt vonWie frage ich effizient mehrere Werte mit dem LIKE-Operator von MySQL ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!