#oracle10g
#oracle10g
Вопрос:
Я пытаюсь сузить следующую строку только до имени пользователя. Число в конце всегда разное. Я могу использовать LTRIM просто отлично, но когда я пытаюсь использовать RTRIM, у меня возникают трудности с удалением всего, что находится справа от имени пользователя.
C:documents and settings[USERNAME]my documentsreports204452.pdf
Будет ли RTRIM работать в этом экземпляре? Если нет, то будет оценена точка в правильном направлении.
Спасибо.
Комментарии:
1. Возможно, вы могли бы показать, что вы уже делаете, и почему это не работает. Всегда ли путь до имени пользователя одинаков — один и тот же регистр и не может быть (например) включен
D:
?
Ответ №1:
Если имя пользователя всегда является третьим уровнем полного пути, вы можете использовать регулярное выражение:
regexp_substr(<file path>, '[^\] ', 1, 3)
Например:
select regexp_substr('C:documents and settings[USERNAME]my documentsreports204452.pdf', '[^\] ', 1, 3)
from dual;
или использование подзапроса, чтобы сделать его более читаемым:
select regexp_substr(file_path, '[^\] ', 1, 3)
from (
select 'C:documents and settings[USERNAME]my documentsreports204452.pdf'
as file_path
from dual
);
REGEXP_SUBSTR(FILE_PATH,'[^\] ',1,3)
-------------------------------------
[USERNAME]
Обратите внимание, что обратная косая черта должна быть экранирована в шаблоне.
Комментарии:
1. Спасибо, Алекс, это было именно то, что мне было нужно.