Tested in MySQL 5.1.41:
DROP TABLE IF EXISTS n; CREATE TEMPORARY TABLE n AS SELECT -1 AS N UNION SELECT -2 UNION SELECT -3 UNION SELECT -4 UNION SELECT -5; DROP TABLE IF EXISTS foo; CREATE TABLE foo AS SELECT 'the,quick,brown,fox' AS csv; SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(foo.csv, ',', nn), ',', 1) AS word FROM foo JOIN n ON (LENGTH(REPLACE(foo.csv, ',', ''))-LENGTH(foo.csv) <= n.n+1);
Result:
+-------+ | word | +-------+ | fox | | brown | | quick | | the | +-------+
source share