Использовать регулярное выражение с подвыражением или нерегулярным выражением
В случае решения с нерегулярными выражениями я просто использую функцию instr, чтобы найти первый >
(начиная с правой стороны строки) и добавляю 1 к позиции. Это значение передается функции substr в качестве начального позиционного значения. Как и Гордон, я просто использую функцию обрезки, чтобы потом очистить пространство слева.
С помощью регулярного выражения я просто использую перегруженную версию regexp_substr, которая принимает подвыражение, и я делаю имя отчета, связанное с подвыражением, помещая его в скобки.
SCOTT@db>WITH smple AS (
2 SELECT
3 'Public >> Reports >> Division1 >> Customer Service >> ReportABC' pth
4 FROM
5 dual
6 UNION ALL
7 SELECT
8 'Customer Service >> ReportABC' pth
9 FROM
10 dual
11 ) SELECT
12 pth,
13 TRIM(substr(pth, (instr(pth,'>',-1) ) + 1) ) rprt_name,
14 regexp_substr(pth,'>>\s*([^>]*)$',1,1,NULL,1) rprt_name2
15 FROM
16 smple;
PTH RPRT_NAME RPRT_NAME2
----------------------------------------------------------------------------------------
Public >> Reports >> Division1 >> Customer Service >> ReportABC ReportABC ReportABC
Customer Service >> ReportABC ReportABC ReportABC