Try:
SELECT substr(str, instr(str, '/', -1) + 1)
FROM (
SELECT '/Name of Folder I want/Another folder...../Folder Im looking from' AS str FROM dual
)
;
"-1" параметр инстр говорит Oracle вернуть первое вхождение символа '/', начиная с конца.
Изменить: Я извиняюсь, я прочитал это неправильно, другое предложение (уродливый):
SELECT substr(str, 2, CASE
WHEN instr(str, '/', 2, 1) > 0 THEN instr(str, '/', 2, 1) - 2
ELSE length(str) - 1
END)
FROM (
SELECT '/Name of Folder I want/Another folder...../Folder Im looking from' AS str FROM dual
UNION ALL
SELECT '/Name of Folder I want' AS str FROM dual
)
;
Регулярное выражение даст другое возможное решение, хотя символ «/» должен поясковыми до конца для строка, которую мы работаем над:
SELECT regexp_substr(str || '/', '/(.*?)/', 1, 1, NULL, 1)
FROM (
SELECT '/Name of Folder I want/Another folder...../Folder Im looking from' AS str FROM dual
UNION ALL
SELECT '/Name of Folder I want' AS str FROM dual
)
;
Здесь мы toook преимущество подвыражениям - последний параметр * REGEXP_SUBSTR * говорит Oracle вернуть только часть строки, которая находится в пределах первой пары скобок.
Я на самом деле хотите получить первое вхождение, начиная с самого начала. Так что просто наоборот. Я хочу получить '/ Name of Folder I want', а затем оставить все остальное. – Chris
Извините, это неправильно ... добавлено другое решение. –
Пошел с регулярным выражением. Отлично, спасибо! – Chris