2012-08-28 26 views
0

我在SQL Server中遇到了這個問題,我試圖弄清楚。我將這個字符串保存在數據庫中,該數據庫具有文件的下載位置和下載日期,因此它可以具有儘可能多的長度,請在此處示例。任何方式從沒有確定長度的字符串中獲取字符串?

downloadedFile = c:/Programs and Features/Public/MyFiles/Myfile Mar 23 12:55 PM 

,也可以是這樣的:

downloadedFile = C:/Programs and Feature/Public/MyFiles/FileTypes/MOV/MyFile Mar 23 1:25 PM 

我能得到哪怕它改變格式的全DATETIME?上面的第一個例子來自MM DD HH:MM格式第二個是MM DD H:MM格式,正如你所看到的,小時是從兩位數到一位的,這就使我有可能使用子字符串。此字符串位於字符串的中間,因此,如果即使一個字符添加到結果集,也可能會出現將其解析爲datetime的問題。有任何想法嗎?

+0

這裏日期部分總是 「MYFILE」 之後? – AnandPhadke

+0

是的。它總是出現在文件後面,所以我可以得到日期和時間,問題是,長度是不同的,所以需要我計算從起始點需要多少個字符的子字符串。 – Nathan

回答

1

你可以使用CHARINDEX()功能

declare @downloadedFile varchar(500); 
set @downloadedFile = 
    'c:/Programs and Features/Public/MyFiles/Myfile Mar 23 12:55 PM' 

select substring(@downloadedFile, 
       CHARINDEX('Myfile ',@downloadedFile)+7,LEN(@downloadedFile)) 

結果:

Mar 23 12:55 PM 

set @downloadedFile = 
'C:/Programs and Feature/Public/MyFiles/FileTypes/MOV/MyFile Mar 23 1:25 PM'; 

select substring(@downloadedFile, 
     CHARINDEX('Myfile ',@downloadedFile)+7,LEN(@downloadedFile)) 

結果:

Mar 23 1:25 PM 
+0

我做了這樣的事情,只是在下一個charindex上設置表達式的長度。這幫了我很多。謝謝! – Nathan

相關問題