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

Non*_*mer 2 sql substring max string-length

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

我在做什么:

我正在尝试使用Charindex函数来定位以下内容:'\'.我还试图结合Max,substring,right,left等功能来获得我想要的东西,但没有运气.

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

 SELECT 
substring(batch_ID, max(charindex('\', batch_ID )), len(batch_ID) - max(charindex('\'))),
Run Code Online (Sandbox Code Playgroud)

Har*_* CO 5

如果您试图从完整文件路径中选择文件名,则可以在MS SQL中使用:

SELECT RIGHT(batch_ID ,CHARINDEX('\',REVERSE(batch_ID ))-1)
Run Code Online (Sandbox Code Playgroud)

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

要打破它:

REVERSE('C:\Users\xyz122\Desktop\PF\import\12-13\COMRECOP.xml')
Run Code Online (Sandbox Code Playgroud)

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

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

告诉你你想要字符串的最后13个字符,我们用RIGHT()获得,但是包括'\',所以我们从13中减去1只得到文件名.