MySQL-Abfragen für durch Kommas getrennte Werte optimieren
Untersuchen wir eine SHIRTS
-Tabelle mit einem COLORS
-Feld, in dem durch Kommas getrennte numerische Farbcodes gespeichert sind. Eine einfache LIKE
-Abfrage kann zu ungenauen Ergebnissen führen:
<code class="language-sql">SELECT * FROM shirts WHERE colors LIKE '%1%'</code>
Diese Abfrage gibt Hemden zurück, die an einer beliebigen Stelle im colors
-Feld „1“ enthalten, einschließlich Hemden mit Farben wie 1, 12 oder 15. Um nur Hemden mit dem Farbcode 1 zu finden, benötigen wir präzisere Methoden.
Eine effektive Technik besteht darin, die Zeichenfolge colors
vor dem Vergleich mit Kommas zu flankieren:
<code class="language-sql">SELECT * FROM shirts WHERE CONCAT(',', colors, ',') LIKE '%,1,%'</code>
Dadurch wird sichergestellt, dass nur der Farbcode 1, der genau durch Kommas getrennt ist, gefunden wird.
Ein weiterer effizienter Ansatz verwendet die Funktion FIND_IN_SET()
:
<code class="language-sql">SELECT * FROM shirts WHERE FIND_IN_SET('1', colors) > 0</code>
FIND_IN_SET()
prüft direkt, ob in der durch Kommas getrennten Liste im Feld colors
„1“ vorhanden ist, und liefert so genaue Ergebnisse. Diese Methode wird im Allgemeinen aufgrund ihrer Klarheit und Effizienz bevorzugt.
Das obige ist der detaillierte Inhalt vonWie kann ich MySQL effizient nach exakten Übereinstimmungen in durch Kommas getrennten Wertfeldern abfragen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!