有没有办法从一个没有确定长度的字符串中获取字符串?

时间:2012-08-28 07:11:50

标签: sql-server-2008

我在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格式,你可以看到,小时来自两个数字到一个,搞砸了我使用子字符串的机会。此字符串位于字符串的中间,因此,即使一个字符添加到结果集,也可能会将问题解析为日期时间。有什么想法吗?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

使用模拟功能分割字符串。 使用“空格”作为分隔符。数组的最后4个索引是你的日期/时间。

也许这可以帮到你

http://social.msdn.microsoft.com/forums/en-US/transactsql/thread/4126a010-6885-4eb0-b79c-c798c90edb85