テーブル 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が、分かりやすいと思います