Я хотел бы удалить завершающие символы из строки, используя регулярное выражение Oracle.
Мои данные выглядят так:
TDC Supervisor #
TDC Supervisor ##
TDC Supervisor ###
Store Manager - 1
Store Manager - 2
Store Manager - 3
Stockroom Clerk Flexi 100 Hrs
Sales Consultant Flexi 120 Hrs
Service Desk Consultant (5 Day)
Secretary
Я хотел бы избавиться от завершающих #
и - 1
, но не 120 Hrs
и 5 Day
. Есть ли способ сделать это, используя регулярное выражение Oracle. Не уверен, следует ли использовать REGEXP_SUBSTR
или REGEXP_REPLACE
.
Поэтому в основном я хотел бы сделать отчет, который возвращает:
TDC Supervisor
Store Manager
Stockroom Clerk Flexi 100 Hrs
Sales Consultant Flexi 120 Hrs
Service Desk Consultant (5 Day)
Secretary
Хэши в конце удаляются с #+$
(#
для хэша, +
для одного или более, $
для конца строки)
Числа удаляются с помощью - *\d+$
(-
для минус, *
для ноль или более пробелов, \d+
для одной или нескольких цифр.
Вы можете комбинировать оба с parens: (#+$)|(- *\d+$)
.
Ноль или больше пробелов удаляются с помощью *
(или \s*
чтобы поймать другие пробелы, такие как вкладки и т.д.), Поэтому окончательное регулярное выражение выглядит как \s*(#+$)|(-\s*\d+$)
.
CREATE TABLE mytable (mycolumn VARCHAR2(50));
INSERT INTO mytable VALUES ('TDC Supervisor #');
INSERT INTO mytable VALUES ('TDC Supervisor ##');
INSERT INTO mytable VALUES ('TDC Supervisor ###');
INSERT INTO mytable VALUES ('Store Manager - 1');
INSERT INTO mytable VALUES ('Store Manager - 2');
INSERT INTO mytable VALUES ('Store Manager - 3');
INSERT INTO mytable VALUES ('Stockroom Clerk Flexi 100 Hrs');
INSERT INTO mytable VALUES ('Sales Consultant Flexi 120 Hrs');
INSERT INTO mytable VALUES ('Service Desk Consultant (5 Day)');
INSERT INTO mytable VALUES ('Secretary');
select distinct regexp_replace(mycolumn,'\s*(#+$)|(-\s*\d+$)')
from mytable;
Service Desk Consultant (5 Day)
Store Manager
TDC Supervisor
Secretary
Sales Consultant Flexi 120 Hrs
Stockroom Clerk Flexi 100 Hrs