Hier is geen native functie voor. U kunt twee SUBSTRING_INDEX-functies gebruiken. En u moet controleren of dat specifieke indexitem bestaat:
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)
retourneert de substring van string@string
voor@n
exemplaren van de@delimiter
.SUBSTRING_INDEX( ... , @delimiter, -1)
geeft alles rechts van het laatste scheidingsteken terug- je moet controleren of het scheidingsteken
@n
bestaat. We kunnen de lengte van de tekenreeks aftrekken met het scheidingsteken en de tekenreeks met het scheidingsteken verwijderd - met behulp vanREPLACE(@string, @delimiter, '')
- en kijk of het groter is dan@n*CHAR_LENGTH(@delimiter)-1