Вы не указали , что не работает с регулярными выражениями, которые вы использовали (и какое из них вы использовали), но - для меня, это работает нормально (хотя у меня нет такого длинного примера , но - я бы посоветовал вам попробовать).
SQL> with test (col) as
2 (select '2015,PLANT,PEST,AND,DISEASE,CONTROL,PLANT,PEST' from dual union all
3 select '2020,LITTLE,FOOT,WHAT,DOES,NOT,WORK' from dual
4 )
5 select regexp_substr(col, '[^,]+', 1, column_value) col1
6 from test cross join
7 table(cast(multiset(select level from dual
8 connect by level <= regexp_count(col, ',') + 1
9 ) as sys.odcinumberlist));
COL1
--------------------------------------------------------------------------------
2015
PLANT
PEST
AND
DISEASE
CONTROL
PLANT
PEST
2020
LITTLE
FOOT
WHAT
DOES
NOT
WORK
15 rows selected.
SQL>