我在表(表名:KYC_Path)的列(列名:路径)中有一个非常大的文本字符串。该表基本上包含非常大的图像路径文本字符串,我需要从中提取特定数字(文件编号)。文本字符串如下所示:
F:\Original\15561 done\sohan1 15561\output_after_name_mapping\01710043429(1).jpg
T:\所有备份\备份1TB(服务器)\所有扫描文件(sohan)\01832876657 (1).JPG
T:\ALL BACKUP\form 2TB passport HDD\All backup\Afren\24313\24313 Nupur_1box 651\output_after_name_mapping\01918082763(1).jpg
T:\ALL BACKUP\zaman all scan\16830 noboni1 box548\output_after_name_mapping\01823152145(1).jpg
我只需要收集以下数字(不带 (1).jpg 部分的文件名),这样我的新列将如下所示:
01710043429
01832876657
01918082763
01823152145
我已经设计了一种使用以下公式的方法:
select (right ([path],18)) as 'wallet_path', [path] into KYCPathNew
from [dbo].[KYCPath]
select (left ([wallet_path],11)) as 'wallet_path_new', [path] into KYCPathNew2
from [dbo].[KYCPathNew]
但是,由于数字 (01823152145) 和文件扩展名 ((1).jpg) 之间存在空格,这给一些文件名不正确的行带来了一些问题。并且遗漏了文件名中的一两个字符。
有没有其他方法可以更有效地收集所有文件名?我可以让 SQL Server 找到最后一个反斜杠,然后从那里取 11 位数字吗?如何?