Я думаю, что если вы хотите получить только числа, я бы сделал это:
SQL> col download_speed for 999999 heading "download_speed"
SQL> col upload_speed for 999999 heading "upload_speed"
SQL> SELECT regexp_replace(regexp_substr('My ADSL 14Mbps/2M speed','[^\/]+'),'[^0-9]', '') download_speed
,regexp_replace(regexp_substr('My ADSL 14Mbps/2M speed','[^\/]+$'), '[^0-9]', '') upload_speed FROM dual;
do u
-- -
14 2
Однако, если вы хотите перенести столбцы в строки, как вы показываете в ожидаемом результате , Я бы сделал:
select *
from (
SELECT regexp_replace(regexp_substr('My ADSL 14Mbps/2M speed','[^\/]+'),'[^0-9]', '') download_speed
,regexp_replace(regexp_substr('My ADSL 14Mbps/2M speed','[^\/]+$'), '[^0-9]', '') upload_speed
FROM dual
) unpivot include nulls ( val for col in (download_speed,upload_speed) );
COL VA
-------------- --
DOWNLOAD_SPEED 14
UPLOAD_SPEED 2
Вы можете изменить значения COL и VA для нужных вам ярлыков