In MySQL können Sie den FIND_IN_SET()
verwenden Funktion, um den Index eines bestimmten Listenelements innerhalb einer Zeichenfolgenliste zurückzugeben (z. B. „Element1, Element2, Element3, …“).
Die Funktion nimmt zwei Argumente entgegen; die zu suchende Zeichenfolge und die zu durchsuchende Liste.
Die Syntax lautet wie folgt:
FIND_IN_SET(str,strlist)
Wobei str
ist die Zeichenfolge, nach der Sie suchen, und strlist
ist die Zeichenfolgenliste, die durchsucht werden soll.
Beispiel
Hier ist ein Beispiel:
SELECT FIND_IN_SET('Dog', 'Cat,Dog,Horse') AS 'Result';
Ergebnis:
+--------+ | Result | +--------+ | 2 | +--------+
Dies gibt 2
zurück denn das ist die Position des Strings Dog
innerhalb der Stringliste.
Beachten Sie, dass nur der Index des ersten Vorkommens zurückgegeben wird. Wenn also Dog
noch einmal vorkommt nach dem ersten erhalten wir immer noch das gleiche Ergebnis:
SELECT FIND_IN_SET('Dog', 'Cat,Dog,Horse,Dog') AS 'Result';
Ergebnis:
+--------+ | Result | +--------+ | 2 | +--------+
Keine Übereinstimmungen
Wenn die Zeichenfolge nicht gefunden wird, ein Ergebnis von 0
wird zurückgegeben:
SELECT FIND_IN_SET('Lizard', 'Cat,Dog,Horse') AS 'Result';
Ergebnis:
+--------+ | Result | +--------+ | 0 | +--------+
Was ist, wenn das erste Argument ein Komma enthält?
Die Funktion gibt kein positives Ergebnis zurück, wenn das erste Argument ein Komma enthält.
Hier ist ein Beispiel:
SELECT FIND_IN_SET('Cat,Dog', 'Cat,Dog,Horse') AS 'Result';
Ergebnis:
+--------+ | Result | +--------+ | 0 | +--------+
In diesem Beispiel könnte man erwarten, dass es ein positives Ergebnis zurückgibt (bei Cat,Dog
tatsächlich in der Liste enthalten ist), jedoch wird das Komma als Trennzeichen in der Liste verwendet, und daher funktioniert der Zeichenfolgenabgleich nicht.
Siehe auch So geben Sie die Position eines Arguments innerhalb einer Liste von Argumenten zurück, indem Sie FIELD()
verwenden Funktion.