Vous pouvez utiliser SUBSTRING_INDEX deux fois, la seconde avec le paramètre -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
Si le paramètre est négatif, tout ce qui se trouve à droite du délimiteur final (en partant de la droite) est renvoyé. Par exemple.
SUBSTRING_INDEX('aaaaa, bbbbb, ccccc', ',', 2)
renverraaaaaa, bbbbb
SUBSTRING_INDEX(
aaaaa, bbbbb, ',', -1)
renverra alorsbbbbb
Vous pouvez également utiliser ', ' comme délimiteur ou TRIM le résultat.
Veuillez consulter le violon ici .
Modifier
Si vous souhaitez prendre en compte des chaînes pouvant avoir moins de trois valeurs, vous pouvez utiliser quelque chose comme ceci :
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
Veuillez consulter le violon ici .