Heim >Datenbank >MySQL-Tutorial >Wie lassen sich bestimmte Werte in durch Kommas getrennten MySQL-Strings genau abgleichen?
Passen Sie bestimmte Werte in einer durch Kommas getrennten MySQL-Zeichenfolge an
Beim Arbeiten mit Tabellen, die durch Kommas getrennte Werte enthalten, ist es häufig erforderlich, bestimmte Werte innerhalb dieser Zeichenfolgen zu isolieren. Die Verwendung des LIKE-Operators mit dem Platzhalterzeichen (%) kann jedoch zu unerwarteten Übereinstimmungen führen.
Bedenken Sie das Feld COLORS in der Tabelle SHIRTS, das Werte wie „1,2,5,12,15“ enthält. Eine Abfrage wie „SELECT * FROM shirts WHERE farben LIKE ‚%1%‘“ versucht, alle Hemden mit einer roten Farbe (Farbe=1) zu finden. Allerdings werden unerwartet auch Hemden mit den Farben Grau (Farbe=12) und Orange (Farbe=15) abgerufen.
Lösung:
1. Verbindungskommas:
Die klassische Lösung besteht darin, Kommas auf der linken und rechten Seite der Zeichenfolge zu verketten:
<code class="language-sql">SELECT * FROM shirts WHERE CONCAT(',', colors, ',') LIKE '%,1,%'</code>
Dadurch wird vor und nach der Zeichenfolge ein Komma eingefügt, um sicherzustellen, dass nur exakte Übereinstimmungen (Farbe=1) ausgewählt werden.
2. Verwenden Sie die Funktion find_in_set:
Alternativ können Sie die Funktion find_in_set verwenden, um nach einem bestimmten Wert in einer durch Kommas getrennten Zeichenfolge zu suchen:
<code class="language-sql">SELECT * FROM shirts WHERE find_in_set('1', colors) > 0</code>
Diese Funktion gibt einen Wert ungleich Null zurück, wenn der angegebene Wert in der Zeichenfolge gefunden wird, wodurch Hemden mit Farbe = 1 effektiv isoliert werden.
Das obige ist der detaillierte Inhalt vonWie lassen sich bestimmte Werte in durch Kommas getrennten MySQL-Strings genau abgleichen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!