Используем регулярное выражение с REGEXP_LIKE для удаления последней буквы в строке:
with t as ( select 'H18.DHSHJ7' as str from dual union all select 'H18.AAA1A' from dual union all select 'H18.AAA10' from dual union all select 'H18.AAAB4B' from dual ) select t.str, regexp_replace(str, '[[:alpha:]]$','') from t SQL> STR REGEXP_REPLACE(STR,'[[:ALPHA:] ---------- ------------------------------------------------------------------ H18.DHSHJ7 H18.DHSHJ7 H18.AAA1A H18.AAA1 H18.AAA10 H18.AAA10 H18.AAAB4B H18.AAAB4
Для удаления последней цифры заменяем [[:alpha:]] на [[:digit:]]
with t as ( select 'H18.DHSHJ7' as str from dual union all select 'H18.AAA1A' from dual union all select 'H18.AAA10' from dual union all select 'H18.AAAB4B' from dual ) select t.str, regexp_replace(str, '[[:digit:]]$','') from t SQL> STR REGEXP_REPLACE(STR,'[[:DIGIT:] ---------- ------------------------------------------------------------------- H18.DHSHJ7 H18.DHSHJ H18.AAA1A H18.AAA1A H18.AAA10 H18.AAA1 H18.AAAB4B H18.AAAB4B
А вот так удаляет все последние буквы до цифры (Oracle 11g):