我正在使用的列中的一个包含导入文件的目录路径。但是,我不想要整个目录路径。我只想要文件名。
我在做什么:
我正在尝试使用 Charindex 函数查找以下内容:'\'。我还尝试结合 Max、substring、right、left 等函数来获得我想要的东西,但没有运气。
有人可以指导我正确的道路吗?
SELECT
substring(batch_ID, max(charindex('\', batch_ID )), len(batch_ID) - max(charindex('\'))),
我正在使用的列中的一个包含导入文件的目录路径。但是,我不想要整个目录路径。我只想要文件名。
我在做什么:
我正在尝试使用 Charindex 函数查找以下内容:'\'。我还尝试结合 Max、substring、right、left 等函数来获得我想要的东西,但没有运气。
有人可以指导我正确的道路吗?
SELECT
substring(batch_ID, max(charindex('\', batch_ID )), len(batch_ID) - max(charindex('\'))),
如果您尝试从完整的文件路径中选择文件名,这适用于 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 以获得文件名。