Вопрос:
Я хотел бы удалить завершающие символы из строки, используя регулярное выражение 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 Ответ №1