Oracle SQL子字符串

Oracle SQL子字符串,sql,regex,oracle,substr,Sql,Regex,Oracle,Substr,我希望得到你的帮助!我试图返回从末尾开始的子字符串。及\ 下面是一个示例字段 \BsadasdaCL04\files25\1Year\TEST\2020\Aug\03\5249013\5249013-07-25-18-96572.cca 我想回去 5249013-07-25-18-96572 最后一个\和之间的字符数。可以改变 Oracle版本19.2.1.247 提前谢谢你 您可以在此处将REGEXP\u SUBSTR与捕获组一起使用: 选择REGEXP\u SUBSTRcol,“[^\.]+

我希望得到你的帮助!我试图返回从末尾开始的子字符串。及\

下面是一个示例字段

\BsadasdaCL04\files25\1Year\TEST\2020\Aug\03\5249013\5249013-07-25-18-96572.cca

我想回去

5249013-07-25-18-96572

最后一个\和之间的字符数。可以改变

Oracle版本19.2.1.247

提前谢谢你

您可以在此处将REGEXP\u SUBSTR与捕获组一起使用:

选择REGEXP\u SUBSTRcol,“[^\.]+\.\S+$”,1,1,NULL,1 从你的桌子上; 正则表达式的解释:

[^\.]+匹配并捕获不带反斜杠或点的文件名 \.匹配最终点扩展 \S+后跟具有一个或多个非空白字符的扩展名 $输入结束 您可以使用regexp\u替换:

选择 Regexp\u substrstrstr,“[^\]+\.[^.]*$”,1,1,null,1s 从双通道中选择“\BsadasdaCL04\files25\1Year\TEST\2020\Aug\03\5249013\5249013-07-25-18-96572.cca”str;
您的速度更快了:顺便说一句,如果文件名中可以有多个点,那么用[^.]@SayanMalakshinov替换\S可能会更好。这取决于实际输入的内容。我的重点不是点,而是文件扩展名中或之后的空格。如果在“\1\2\3\abc….d e f”和“\1\2\3\abc….def”以及“\1\2\3\abc…..”、“\1\2\3\abc….”上出现多个点,您的regexp将返回相同的结果。请停止在我的答案下添加无休止的注释。顺便说一句,你是在我发帖4分钟后发的。嗯,好的_ツ_/“我只是想帮你理解其中的区别。我还不明白你关于时间的观点,因为我的第一条评论说你是第一个。。。顺便说一句,我是用手机接的,所以不方便
select regexp_replace(field, '^.*\\([^.\\]+)[.].*$', '\1')
from (select '\BsadasdaCL04\files25\1Year\TEST\2020\Aug\03\5249013\5249013-07-25-18-96572.cca' as field from dual) t