你试过Cast方法吗?
SELECT CAST('<x>' + REPLACE('\zfilemgr3-00\Corporate\On the Market Information\13030\12743\Contract\12743.pdf','\','</x><x>') + '</x>' AS XML).value('/x[5]','int'); SELECT CAST('<x>' + REPLACE('\zfilemgr3-00\Corporate\On the Market Information\141590\Contract\141590.pdf','\','</x><x>') + '</x>' AS XML).value('/x[5]','int');
点击此处查看直播 片段
考虑到 appear in the same place :
appear in the same place
declare @temp table (val varchar(250)); insert @temp values ('\zfilemgr3-00\Corporate\On the Market Information\13030\12743\Contract\12743.pdf'), ('\zfilemgr3-00\Corporate\On the Market Information\141590\Contract\141590.pdf'); declare @start int = 51; select substring(val, @start, charindex('\', val, @start) - @start) num from @temp;
输出:
num ------ 13030 141590
这段代码对你好吗?
你可以试试这个:
DECLARE @value NVARCHAR(4000) = N'\zfilemgr3-00\Corporate\On the Market Information\13030\12743\Contract\12743.pdf' -- 12743.pdf SELECT REVERSE(SUBSTRING(REVERSE(@value), 0, CHARINDEX('\', REVERSE(@value)))) -- 12743 SELECT REVERSE(SUBSTRING(REVERSE(@value), PATINDEX('%[0-9]%', REVERSE(@value)), CHARINDEX('\', REVERSE(@value)) - PATINDEX('%[0-9]%', REVERSE(@value))))
如果你一直在使用 .pdf 或者一些扩展,您可以使用第一个变体并替换扩展名。如果您需要动态执行此操作,我们需要获取第一个数字,以便将其用作启动索引 SUBSTRING 功能。
.pdf
SUBSTRING