Suche nach durch Kommas getrennten Listen in MySQL
Beim Umgang mit einem MySQL-Feld, das eine durch Kommas getrennte Liste von IDs enthält (z. B. „ 12,13,14,16") wird es schwierig, mit einem LIKE gezielt nach bestimmten Werten in dieser Liste zu suchen Operator.
Ein Benutzer, der mit diesem Problem konfrontiert war, suchte nach einer Möglichkeit, in einem solchen Feld nach einem bestimmten Wert (z. B. „1“) zu suchen. Allerdings würde die Verwendung einer Abfrage wie „SELECT ... WHERE field LIKE ‚%1%‘“ dazu führen, dass fast alle Einträge abgerufen werden, da IDs im Bereich von 10–20 innerhalb des Felds weit verbreitet sind.
Um dieses Problem zu beheben, hat der Benutzer überlegt, stattdessen nach „%1,%“ zu suchen. Dieser Ansatz würde jedoch für die erste und letzte ID im Feld nicht funktionieren.
Lösung: FIND_IN_SET-Funktion
Die Lösung liegt in der Verwendung der FIND_IN_SET-Funktion in MySQL. FIND_IN_SET benötigt zwei Argumente: eine Zeichenfolge, nach der gesucht werden soll, und eine durch Kommas getrennte Zeichenfolge, in der gesucht werden soll. Es gibt die Position der gesuchten Zeichenfolge innerhalb der Suchzeichenfolge zurück oder 0, wenn sie nicht gefunden wird.
In diesem Fall würde die Abfrage für die Suche nach „1“ im Feld wie folgt lauten:
SELECT ... WHERE FIND_IN_SET('1', field)
Diese Abfrage gibt nur die Zeilen zurück, in denen „1“ in der durch Kommas getrennten Liste der IDs im Feld vorhanden ist.
Das obige ist der detaillierte Inhalt vonWie kann man in MySQL effizient nach bestimmten Werten in durch Kommas getrennten Listen suchen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!