Предполагая, что пробел действительно является пробелом, как насчет replace()
по всей строке?
select replace(sis.subject_code || '_' || LEFT(REPLACE(sis.SIS_TERM_ID, 0, ''), LENGTH(sis.SIS_TERM_ID) - 4) || SUBSTR(sis.SIS_TERM_ID, 8, 8), '', '')
Неясно, идет ли замена от последнего элемента или от предыдущего. Но вам не нужны пробелы в строке.