テーブル
num
------------
10
12345678
123456789102
右から8バイト取り出し、
8バイト未満の場合は、左に0埋めする
出力結果
num 編集後
------------ --------
10 00000010
12345678 12345678
123456789102 56789102
select num,
nvl(substr(to_char(num),-8),Lpad(to_char(num),8,'0')) as 方法1,
case when Lengthb(to_char(num)) >=8
then substr(to_char(num),-8)
else Lpad(to_char(num),8,'0') end as 方法2,
Lpad(RegExp_Substr(to_char(num),'.{1,8}$'),8,'0') as 方法3,
substr('00000000' || to_char(num),-8) as 方法4
from (select 10 as num from dual
union select 12345678 from dual
union select 123456789012 from dual);
方法3か方法4が、分かりやすいと思います