2

我正在使用的列中的一个包含导入文件的目录路径。但是,我不想要整个目录路径。我只想要文件名。

我在做什么:

我正在尝试使用 Charindex 函数查找以下内容:'\'。我还尝试结合 Max、substring、right、left 等函数来获得我想要的东西,但没有运气。

有人可以指导我正确的道路吗?

 SELECT 
substring(batch_ID, max(charindex('\', batch_ID )), len(batch_ID) - max(charindex('\'))),
4

1 回答 1

5

如果您尝试从完整的文件路径中选择文件名,这适用于 MS SQL:

SELECT RIGHT(batch_ID ,CHARINDEX('\',REVERSE(batch_ID ))-1)

不能在您想要的上下文中使用像 MAX() 这样的聚合函数,因为它旨在从一系列行中返回一个值。

分解它:

REVERSE('C:\Users\xyz122\Desktop\PF\import\12-13\COMRECOP.xml')

获取您:LMX.POCERMOC\31-21\tropmi\FP\potkseD\221zyx\sresU\:C

然后 CHARINDEX 在反转字符串的第 13 位找到 \。

告诉您您想要字符串的最后 13 个字符,我们使用 RIGHT() 获得,但其中包括 '\',因此我们从 13 中减去 1 以获得文件名。

于 2013-06-03T16:35:29.033 回答