Non esiste una funzione nativa per questo. Puoi utilizzare due funzioni SUBSTRING_INDEX. E devi verificare se esiste quell'elemento dell'indice specifico:
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)
restituisce la sottostringa dalla stringa@string
prima di@n
occorrenze del@delimiter
.SUBSTRING_INDEX( ... , @delimiter, -1)
restituisce tutto a destra del delimitatore finale- devi controllare se il delimitatore
@n
esiste. Possiamo sottrarre la lunghezza della stringa con il delimitatore e la stringa con il delimitatore rimosso - usandoREPLACE(@string, @delimiter, '')
- e verifica se è maggiore di@n*CHAR_LENGTH(@delimiter)-1