Możesz użyć SUBSTRING_INDEX dwa razy, drugi z parametrem -1:
SELECT
'aaaaa, bbbbb, ccccc',
SUBSTRING_INDEX('aaaaa, bbbbb, ccccc', ',', 1) AS column_one,
SUBSTRING_INDEX(SUBSTRING_INDEX('aaaaa, bbbbb, ccccc', ',', 2), ',', -1) AS column_two,
SUBSTRING_INDEX(SUBSTRING_INDEX('aaaaa, bbbbb, ccccc', ',', 3), ',', -1) AS column_three
Jeśli parametr jest ujemny, zwracane jest wszystko na prawo od końcowego ogranicznika (licząc od prawej). Np.
SUBSTRING_INDEX('aaaaa, bbbbb, ccccc', ',', 2)
zwróciaaaaa, bbbbb
SUBSTRING_INDEX(
aaaaa, bbbbb, ',', -1)
zwrócibbbbb
Możesz również użyć znaku „,” jako ogranicznika lub PRZYCINANIE wynik.
Zobacz skrzypce tutaj .
Edytuj
Jeśli chcesz wziąć pod uwagę ciągi, które mogą mieć mniej niż trzy wartości, możesz użyć czegoś takiego:
SELECT
s,
SUBSTRING_INDEX(s, ',', 1) AS column_one,
CASE WHEN LENGTH(s)-LENGTH(Replace(s, ',', ''))>0
THEN SUBSTRING_INDEX(SUBSTRING_INDEX(s, ',', 2), ',', -1)
ELSE NULL END AS column_two,
CASE WHEN LENGTH(s)-LENGTH(Replace(s, ',', ''))>1
THEN SUBSTRING_INDEX(SUBSTRING_INDEX(s, ',', 3), ',', -1)
ELSE NULL END AS column_three
FROM
strings
Zobacz skrzypce tutaj .