Tidak ada fungsi asli untuk ini. Anda dapat menggunakan dua fungsi SUBSTRING_INDEX. Dan Anda perlu memeriksa apakah item indeks tertentu itu ada:
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)
mengembalikan substring dari string@string
sebelum@n
kemunculan@delimiter
.SUBSTRING_INDEX( ... , @delimiter, -1)
mengembalikan semuanya ke kanan pembatas akhir- Anda perlu memeriksa apakah pembatas
@n
ada. Kita dapat mengurangi panjang string dengan pembatas, dan string dengan pembatas dihilangkan - menggunakanREPLACE(@string, @delimiter, '')
- dan lihat apakah lebih besar dari@n*CHAR_LENGTH(@delimiter)-1