このためのネイティブ関数はありません。 2つの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
より大きいかどうかを確認します