Il n'y a pas de fonction native pour cela. Vous pouvez utiliser deux fonctions SUBSTRING_INDEX. Et vous devez vérifier si cet élément d'index spécifique 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)
renvoie la sous-chaîne de la chaîne@string
avant@n
occurrences du@delimiter
.SUBSTRING_INDEX( ... , @delimiter, -1)
renvoie tout à droite du délimiteur final- vous devez vérifier si le délimiteur
@n
existe. Nous pouvons soustraire la longueur de la chaîne avec le délimiteur et la chaîne avec le délimiteur supprimé - en utilisantREPLACE(@string, @delimiter, '')
- et voir s'il est supérieur à@n*CHAR_LENGTH(@delimiter)-1