Для замены N-ного символа в строке, можно обойтись и без SUBSTR — использовать REGEXP_REPLACE.
select regexp_replace('208010100000','.','X', 5, 1) as res from dual union all select regexp_replace('208010100000','.','X', 2, 1) as res from dual; RES ------------ 2080X0100000 2X8010100000
А параметр ‘.’ (точка) что значит? Ну и для порядка последний параметр (который в примере всегда=1) что значит?
@Дмитрий
Точка в регулярном выражении — любой символ. Таким образом,
будет означать замену всех символов в выражении на ‘X’, а последующие две цифры означают, что замена начнется с пятого символа и заменен будет всего один символ.