Можете да използвате SUBSTRING_INDEX два пъти, вторият с параметър -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
Ако параметърът е отрицателен, се връща всичко вдясно от крайния разделител (като се брои отдясно). Напр.
SUBSTRING_INDEX('aaaaa, bbbbb, ccccc', ',', 2)
ще върнеaaaaa, bbbbb
SUBSTRING_INDEX(
aaaaa, bbbbb, ',', -1)
след това ще върнеbbbbb
Може също да искате да използвате ', ' като разделител или ОТРЕЖАВАНЕ резултата.
Моля, вижте цигулка тук .
Редактиране
Ако искате да разгледате низове, които може да имат по-малко от три стойности, можете да използвате нещо подобно:
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
Моля, вижте цигулка тук .