立即使用charindex,max,substring / right函数

时间:2013-06-03 16:29:39

标签: sql substring max string-length

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

我在做什么:

我正在尝试使用Charindex函数来找到以下内容:'\'。我也尝试将Max,substring,right,left等功能组合起来,以获得我想要的东西,但没有运气。

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

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

1 个答案:

答案 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来获得文件名。