Your immediate problem is your design. You should not store multiple integer values in a string column. Each tuple of values should be stored on a separate row.
As for your question: in recent MySQL version, an option is JSON. It might be handier to put the values in rows rather than in columns. Here is one way to do it:
select t.*, x.*
from mytable t
cross join lateral json_table(
concat('[', t.code, ']'),
'$[*]' columns (rn for ordinality, code_part int path '$')
) x
If you do want the results as columns, then one option is conditional aggregation; you need to enumerate as many columns as necessary:
select t.*,
max(case when x.rn = 1 then x.code_part end) as code_part_1,
max(case when x.rn = 2 then x.code_part end) as code_part_2,
...
from mytable t
cross join lateral json_table(
concat('[', t.code, ']'),
'$[*]' columns (rn for ordinality, code_part int path '$')
) x
group by t.id -- assuming that "id" is the primary key of "mytable"