So ganz verstehe ich die Frage nicht.
Du kannst ein CHAR-Feld auch mit dec(..) casten, wenn garantiert immer ein numerischer Wert enthalten ist:

dec(substr(...), 9, 0)

ggf. vorher auch trimmen:

dec(trim(substr(...)), 9, 0)