Sie könnten SUBSTRING_INDEX verwenden zweimal, der zweite mit -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
Wenn der Parameter negativ ist, wird alles rechts vom letzten Trennzeichen (von rechts gezählt) zurückgegeben. Bsp.
SUBSTRING_INDEX('aaaaa, bbbbb, ccccc', ',', 2)
gibtaaaaa, bbbbb
zurückSUBSTRING_INDEX(
aaaaa, bbbbb, ',', -1)
gibt dannbbbbb
zurück
Sie können auch ', ' als Trennzeichen verwenden oder TRIM das Ergebnis.
Siehe fiddle hier .
Bearbeiten
Wenn Sie Zeichenfolgen berücksichtigen möchten, die möglicherweise weniger als drei Werte haben, können Sie Folgendes verwenden:
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
Siehe fiddle hier .