Du kan bruge SUBSTRING_INDEX to gange, den anden med -1 parameter:
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
Hvis parameteren er negativ, returneres alt til højre for den endelige afgrænsning (tæller fra højre). F.eks.
SUBSTRING_INDEX('aaaaa, bbbbb, ccccc', ',', 2)
vil returnereaaaaa, bbbbb
SUBSTRING_INDEX(
aaaaa, bbbbb, ',', -1)
vil derefter returnerebbbbb
Du vil måske også bruge ', ' som afgrænsning eller TRIM resultatet.
Se venligst violin her .
Rediger
Hvis du vil overveje strenge, der kan have mindre end tre værdier, kan du bruge noget som dette:
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
Se venligst violin her .