Главная > SQL > Регулярные выражения. Удаление последней буквы или цифры в строке.


Регулярные выражения. Удаление последней буквы или цифры в строке.

Используем регулярное выражение с 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

Похожие записи:

  1. mbb
    10 Май 2018 в 13:54 | #1

    А вот так удаляет все последние буквы до цифры (Oracle 11g):

    with t as
    (           select 'H18.DHSHJ7' as str from dual
     union all  select 'H18.AAA1AAAA' from dual
     union all  select 'H18.AAA10' from dual 
     union all  select 'H18.AAAB4BB' from dual  
    )
    select t.str, regexp_replace(str, '[[:alpha:]]+$','')
    from t
  1. Пока что нет уведомлений.