2016-05-17 3 views
1

Я хочу получить строку после. Из таблицы поз, которая имеет такие значения, как:Чтобы получить строку после. через regex in oracle

Office.Secretary 
XYZ.Manager - Liaison 
ABC.Community Relations Officer 

Это должно быть преобразовано в

Secretary 
Manager - Liaison 
Community Relations Officer 

Я использую это:

SELECT REGEXP_REPLACE(REGEXP_SUBSTR (name, '..+' , 1), '.', '', 1, 1) FROM table_POS; 

Но я получаю деталь колонки, как это ,

+1

Попробуйте 'ВЫБРАТЬ regexp_replace (имя, '^ [^.] + [.]', '') FROM table_POS;' –

+0

Спасибо! это сработало .. –

ответ

0
select regexp_replace('ABC.Community Relations Officer','([^\.]{0,}\.)(.*)','\2') from dual; 

Попробуйте regexp group capture.

1-st group ([^\.]{0,}\.) - сопоставить все, чтобы сначала точка с точкой.

2-nd group (.*) - Совсем все после точки.

'\2' - заменить всю строку на значение из 2-й группы.

С этим будущим вы можете, например, изменить порядок своих групп.

select regexp_replace('ABC.Community Relations Officer','([^\.]{0,}\.)(.*)','\2 -- \1') from dual; 
0

Вы можете использовать (Это удалит после последнего .)

SELECT REGEXP_REPLACE(name, '^.*\.' , '') FROM table_POS; 

Если вы хотите удалить после первого ., вы можете использовать

SELECT REGEXP_REPLACE(name, '^.*?\.' , '') FROM table_POS; 
1

Если вам нужно удалить кусок строки от начала и до сначала точка, вам необходимо использовать решение с переопределенным символом класса символов:

SELECT REGEXP_REPLACE(name, '^[^.]+[.]', '') FROM table_POS; 

Обратите внимание, что здесь,

  • ^ - соответствует началу строки
  • [^.]+ - соответствует 1 или более, кроме буквального точки
  • [.] символов - буквальная точки.

Вся подобная подстрока заменена пустой строкой и, таким образом, удаляется.

Если вам нужно удалить кусок струны до последней точки, вам нужно решение рок, что-то вроде SELECT REGEXP_REPLACE(name, '^.+[.]', '') FROM table_POS;.

Смежные вопросы