我正在处理的列中包含导入文件的目录路径。但是,我不想要整个目录路径。我只想要文件名。
我在做什么:
我正在尝试使用Charindex函数来找到以下内容:'\'。我也尝试将Max,substring,right,left等功能组合起来,以获得我想要的东西,但没有运气。
有人可以指导我走正确的道路吗?
SELECT
substring(batch_ID, max(charindex('\', batch_ID )), len(batch_ID) - max(charindex('\'))),
答案 0 :(得分: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来获得文件名。