Dafür gibt es keine native Funktion. Sie können zwei SUBSTRING_INDEX-Funktionen verwenden. Und Sie müssen prüfen, ob dieses bestimmte Indexelement existiert:
SET @string:='1,2,3,4,5';
SET @delimiter:=',';
SET @n:=6;
SELECT
CASE WHEN
CHAR_LENGTH(@string)-CHAR_LENGTH(REPLACE(@string, @delimiter, ''))>=
@n*CHAR_LENGTH(@delimiter)-1
THEN
SUBSTRING_INDEX(SUBSTRING_INDEX(@string, @delimiter, @n), @delimiter, -1)
END;
SUBSTRING_INDEX(@string, @delimiter, @n)gibt den Teilstring von String@stringzurück vor@nVorkommen des@delimiter.SUBSTRING_INDEX( ... , @delimiter, -1)gibt alles rechts vom letzten Trennzeichen zurück- Sie müssen prüfen, ob das Trennzeichen
@nist existiert. Wir können die Länge der Zeichenfolge mit dem Trennzeichen und der Zeichenfolge mit entferntem Trennzeichen subtrahieren - mitREPLACE(@string, @delimiter, '')- und prüfen Sie, ob es größer als@n*CHAR_LENGTH(@delimiter)-1ist