Nie ma do tego funkcji natywnej. Możesz użyć dwóch funkcji SUBSTRING_INDEX. I musisz sprawdzić, czy ten konkretny element indeksu istnieje:
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)
zwraca podciąg z ciągu@string
przed@n
wystąpienia@delimiter
.SUBSTRING_INDEX( ... , @delimiter, -1)
zwraca wszystko na prawo od ostatniego ogranicznika- musisz sprawdzić, czy separator
@n
istnieje. Możemy odjąć długość ciągu z ogranicznikiem i ciągu z usuniętym ogranicznikiem - używającREPLACE(@string, @delimiter, '')
- i zobacz, czy jest większe niż@n*CHAR_LENGTH(@delimiter)-1