2013-06-03 87 views
2

一旦我使用的列包含導入文件的目錄路徑。但是,我不希望整個目錄路徑。我只想要文件名。同時使用charindex,max,substring/right函數

我在做什麼:

我想使用CHARINDEX函數來查找如下:「\」。我也試圖將Max,substring,right,left等功能結合起來,以獲得我正在尋找的東西,但沒有運氣。

有人可以請指導我到正確的道路嗎?

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

如果你展示了一個示例字符串和你正在尋找的輸出,這將會很有幫助。 –

+1

另外你正在使用哪個dbms,MS SQL,MySql等? –

+0

下面是示例字符串:C:\ Users \ xyz122 \ Desktop \ PF \ import \ 12-13 \ COMRECOP.xml。我正在尋找的輸出是文件名:例如:COMRECOP.xml – NonProgrammer

回答

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以得到文件名。

+0

非常感謝!查詢工作,我有一種感覺,我在錯誤的上下文中使用MAX()函數,但不知道我還能做什麼來達到我想要的輸出!你的回答只是讓我頭腦發熱! – NonProgrammer