Используем регулярное выражение с 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
Для удаления управляющих символов (не отображаемых) можно использовать регулярные выражения:
- REGEXP_LIKE — для поиска значений с управляющими символами
- REGEXP_REPLACE — для удаления управляющих символов
select str, regexp_replace(t.str, '[[:cntrl:]]') as new_str
from (
select 'test1'||chr(28) as str from dual
union all
select 'test2' from dual
union all
select 'test3+_*- =\\\|()^%#3@' from dual
) t
where regexp_like(t.str, '[[:cntrl:]]')
STR NEW_STR
---------------------- ----------------------
test1 test1

Регулярные выражения произошли из теорий автоматов и формальных языков, поэтому поначалу производят устрашающее впечатление. Однако, их базовые понятия являются простыми и в то же время мощными.
Начиная с версии Oracle 10g регулярные выражения можно использовать напрямую в SQL запросах.
Шаблон регулярных выражений выражается в виде строки, содержащей следующие конструкции:
- Литеральные символы. Фактические символы, которые следует искать (Например, шаблон xyz соответствует только вхождению «xyz»)
- Метасимволы. Операции, определяющие алгоритмы, которые должны применяться во время поиска (Например, шаблон ^xyz соответсвует только строке, начинающейся с «xyz» — другие вхождения не учитываются)
Читать дальше про “Регулярные выражения Oracle (regular expression)” »
Последние комментарии