Архив

Публикации с меткой ‘REGEXP_LIKE’

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

4 Апрель 2018 2 comments

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

31 Март 2010 31 comments


Регулярные выражения произошли из теорий автоматов и формальных языков, поэтому поначалу производят устрашающее впечатление. Однако, их базовые понятия являются простыми и в то же время мощными.
Начиная с версии Oracle 10g регулярные выражения можно использовать напрямую в SQL запросах.

Шаблон регулярных выражений выражается в виде строки, содержащей следующие конструкции:

  • Литеральные символы. Фактические символы, которые следует искать (Например, шаблон xyz соответствует только вхождению «xyz»)
  • Метасимволы. Операции, определяющие алгоритмы, которые должны применяться во время поиска (Например, шаблон ^xyz соответсвует только строке, начинающейся с «xyz» — другие вхождения не учитываются)

Читать дальше про “Регулярные выражения Oracle (regular expression)” »