2017-08-15 53 views
0

我有一個名爲「文件路徑」一列的表,我需要的文件路徑解析爲三個單獨的列... 我一直用這個解析文件路徑 - 一個具有多個行

DECLARE @STR NVARCHAR(4000) 
SET @STR = 'NEED ANSWER FOR THIS SPACE' 

SELECT LEFT(@STR,(CHARINDEX('|',@STR)-1)) AS FILEPATH, 
    RIGHT(@STR,LEN(@STR) - ((CHARINDEX('|',@STR)-1))-1) AS NUMBER_OF_RECORDS, 
    @STR 

但我不知道如何聲明變量@STR作爲整個列...任何幫助將是巨大的。

+0

你不能讓你的選擇對你的表和字段,而不是使用@STR?我的意思是,做SELECT LEFT(FilePath_Field,(CHARINDEX('|',@ STR)-1))AS FILEPATH,RIGHT(FilePath_Field,LEN(@STR) - ((CHARINDEX('|',@ STR)-1) )-1)AS NUMBER_OF_RECORDS,FilePath_Field FROM Your_Table –

回答

0

嘗試像這樣...

SELECT 
    FILEPATH = LEFT(@STR, (CHARINDEX('|', st.FilePath) - 1)), 
    NUMBER_OF_RECORDS = RIGHT(st.FilePath, LEN(st.FilePath) - ((CHARINDEX('|', st.FilePath) - 1)) - 1), 
    st.FilePath 
FROM 
    dbo.SomeTable st;