Няма собствена функция за това. Можете да използвате две функции SUBSTRING_INDEX. И трябва да проверите дали този конкретен индексен елемент съществува:
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)
връща подниз от низ@string
преди@n
поява на@delimiter
.SUBSTRING_INDEX( ... , @delimiter, -1)
връща всичко вдясно от крайния разделител- трябва да проверите дали разделител
@n
съществува. Можем да извадим дължината на низа с разделителя и низа с премахнат разделител - използвайкиREPLACE(@string, @delimiter, '')
- и вижте дали е по-голямо от@n*CHAR_LENGTH(@delimiter)-1