В Postgres вы также можете использовать функцию 'regexp_split_to_table ()'.
Если вы используете MariaDB или MySQL, вы можете использовать рекурсивный CTE, например:
with recursive itemtable as (
select
trim(substring_index(data, ',', 1)) as value,
right(data, length(data) - locate(',', data, 1)) as data
from (select '1,2,3,4,5' as data) as input
union
select
trim(substring_index(data, ',', 1)) as value,
right(data, length(data) - locate(',', data, 1)) as data
from itemtable
)