MySQL-Abfragen: Präzises Targeting von Werten in durch Kommas getrennten Zeichenfolgen
Viele Datenbanken verwenden Felder mit durch Kommas getrennten Werten (CSV). Dies stellt bei der Abfrage nach bestimmten Werten innerhalb dieser Zeichenfolgen häufig eine Herausforderung dar. Betrachten Sie eine COLORS
-Spalte in einer SHIRTS
-Tabelle. Eine einfache LIKE
-Abfrage wie SELECT * FROM SHIRTS WHERE COLORS LIKE '%1%'
kann zu ungenauen Ergebnissen führen und Einträge zurückgeben, bei denen „1“ Teil eines größeren Werts ist (z. B. „12“ oder „15“).
Um nur Hemden mit der Farbe „1“ genau abzurufen, vermeiden Sie Teilübereinstimmungen. Hier sind zwei wirksame Strategien:
Methode 1: Hinzufügen von Kommas für eine präzise Übereinstimmung
Bei diesem Ansatz wird die CSV-Zeichenfolge vor dem Vergleich mit Kommas flankiert. Dadurch wird sichergestellt, dass nur vollständige Werte übereinstimmen:
<code class="language-sql">SELECT * FROM SHIRTS WHERE CONCAT(',', COLORS, ',') LIKE '%,1,%'</code>
Durch das Hinzufügen von führenden und nachgestellten Kommas werden nur Einträge ausgewählt, bei denen „,1“ in der Zeichenfolge vorkommt.
Methode 2: Verwendung von FIND_IN_SET
Die Funktion FIND_IN_SET
bietet eine direktere Lösung. Es identifiziert die Position eines Teilstrings innerhalb eines durch Kommas getrennten Strings und gibt einen Wert ungleich Null zurück, wenn er gefunden wird:
<code class="language-sql">SELECT * FROM SHIRTS WHERE FIND_IN_SET('1', COLORS) > 0</code>
Diese Methode ist besonders hilfreich beim Umgang mit numerischen Kennungen oder Farbcodes. Es prüft direkt, ob „1“ als eindeutiger Wert innerhalb der Zeichenfolge COLORS
vorhanden ist.
Das obige ist der detaillierte Inhalt vonWie kann man mit MySQL effizient bestimmte Werte in durch Kommas getrennten Zeichenfolgen finden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!