Я немного обманываю, чтобы вычислить X, полагаясь на разбор строк, а не на математические операции. Но что-то вроде этого работает
РЕДАКТИРОВАТЬ: Забыл о 6-й строке.Я также удалил чит строки символов
with t as (
select 12345 col1 from dual
)
select level seq,
trunc((col1 -
power(10,level) * trunc(col1/(power(10,level)))) /
power(10,level-1)) x,
trunc(col1/(power(10,level))) y
from t
connect by level <= length(col1)+1
/
SQL> ed
Wrote file afiedt.buf
1 with t as (
2 select 12345 col1 from dual
3 )
4 select level seq,
5 trunc((col1 -
6 power(10,level) * trunc(col1/(power(10,level)))) /
7 power(10,level-1)) x,
8 trunc(col1/(power(10,level))) y
9 from t
10* connect by level <= length(col1)+1
SQL> /
SEQ X Y
---------- ---------- ----------
1 5 1234
2 4 123
3 3 12
4 2 1
5 1 0
6 0 0
6 rows selected.