Neexistuje pro to žádná nativní funkce. Můžete použít dvě funkce SUBSTRING_INDEX. A musíte zkontrolovat, zda tato konkrétní položka indexu existuje:
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)
vrátí podřetězec z řetězce@string
před@n
výskyty@delimiter
.SUBSTRING_INDEX( ... , @delimiter, -1)
vrátí vše napravo od koncového oddělovače- musíte zkontrolovat, zda oddělovač
@n
existuje. Můžeme odečíst délku řetězce s oddělovačem a řetězec s odstraněným oddělovačem - pomocíREPLACE(@string, @delimiter, '')
- a zjistěte, zda je větší než@n*CHAR_LENGTH(@delimiter)-1