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@string
zurück vor@n
Vorkommen des@delimiter
.SUBSTRING_INDEX( ... , @delimiter, -1)
gibt alles rechts vom letzten Trennzeichen zurück- Sie müssen prüfen, ob das Trennzeichen
@n
ist 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)-1
ist