Heim >Datenbank >MySQL-Tutorial >Wie kann ich MySQL effizient nach exakten Übereinstimmungen in durch Kommas getrennten Wertfeldern abfragen?

Wie kann ich MySQL effizient nach exakten Übereinstimmungen in durch Kommas getrennten Wertfeldern abfragen?

Linda Hamilton
Linda HamiltonOriginal
2025-01-22 21:41:12342Durchsuche

How Can I Efficiently Query MySQL for Exact Matches in Comma-Separated Value Fields?

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!

Stellungnahme:
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