Não há função nativa para isso. Você pode usar duas funções SUBSTRING_INDEX. E você precisa verificar se esse item de índice específico existe:
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)
retorna a substring da string@string
antes de@n
ocorrências do@delimiter
.SUBSTRING_INDEX( ... , @delimiter, -1)
retorna tudo à direita do delimitador final- você precisa verificar se o delimitador
@n
existe. Podemos subtrair o comprimento da string com o delimitador e a string com o delimitador removido - usandoREPLACE(@string, @delimiter, '')
- e veja se é maior que@n*CHAR_LENGTH(@delimiter)-1