我正在尝试将跟随字符串缩小到只是用户名。最后的数字总是不同的。我可以LTRIM就好了,但是当我尝试使用RTRIM时,我很难删除用户名右侧的所有内容。
C:\documents and settings\[USERNAME]\my documents\reports\204452.pdf
RTRIM会在这种情况下工作吗?如果没有,那么正确的方向上的一点将会受到赞赏。
感谢。
答案 0 :(得分:1)
如果用户名始终是完整路径的第三级,则可以使用正则表达式:
regexp_substr(<file path>, '[^\\]+', 1, 3)
例如:
select regexp_substr('C:\documents and settings\[USERNAME]\my documents\reports\204452.pdf', '[^\\]+', 1, 3)
from dual;
或使用子查询只是为了使其更具可读性:
select regexp_substr(file_path, '[^\\]+', 1, 3)
from (
select 'C:\documents and settings\[USERNAME]\my documents\reports\204452.pdf'
as file_path
from dual
);
REGEXP_SUBSTR(FILE_PATH,'[^\\]+',1,3)
-------------------------------------
[USERNAME]
请注意,必须在模式中转义反斜杠。