Heim >Datenbank >MySQL-Tutorial >Wie suche ich in MySQL nach bestimmten Werten in einem durch Kommas getrennten Feld?
Suchen in einem durch Kommas getrennten Feld in MySQL
In MySQL können bestimmte Szenarien auftreten, in denen Daten in einem durch Kommas getrennten Format gespeichert werden , obwohl empfohlene Praktiken davon abraten. Dies stellt die Durchführung präziser Suchvorgänge in solchen Feldern vor Herausforderungen. Betrachten Sie das folgende Beispiel:
Eine Tabelle enthält ein Feld mit Werten aus einer anderen Tabelle, die als durch Kommas getrennte Liste gespeichert sind:
12,13,14,16
Die vorliegende Aufgabe besteht darin, darin nach bestimmten Werten zu suchen Feld mithilfe einer Abfrage wie:
SELECT ... WHERE field LIKE '%1%'
Aufgrund der Art der Daten würde eine solche Abfrage jedoch fast alle Einträge treffen, da die meisten gängigen IDs in einen engen Bereich fallen.
Um dieses Problem zu beheben, ist eine spezifischere Suche erforderlich. Anstatt %1% zu verwenden, sollten Sie %1,% innerhalb der LIKE-Bedingung verwenden. Dadurch werden Werte abgeglichen, die 1 vor und nach einem Komma enthalten.
Leider weist dieser Ansatz Einschränkungen für den ersten und letzten Wert in der durch Kommas getrennten Liste auf, da diese nicht vom Muster abgeglichen werden.
Daher ist ein anderer Ansatz notwendig. MySQL bietet eine leistungsstarke Funktion namens FIND_IN_SET, die es ermöglicht, innerhalb einer durch Kommas getrennten Liste zu suchen:
SELECT ... WHERE FIND_IN_SET('1', field)
Mit FIND_IN_SET wird die Position des angegebenen Werts innerhalb der durch Kommas getrennten Liste zurückgegeben, oder 0, wenn dies der Fall ist Wert ist nicht vorhanden. Dies ermöglicht eine präzise und effiziente Suche auch in nicht idealen Datenstrukturen.
Das obige ist der detaillierte Inhalt vonWie suche ich in MySQL nach bestimmten Werten in einem durch Kommas getrennten Feld?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!