如何在列中搜索单词并拆分日期后跟单词

时间:2014-10-08 15:14:18

标签: sql sql-server sql-server-2008

我有两列创建日期和Rtrail

  
    

例如

         

Create_date ------------------------------------ Rtrail

         
      

2014/5/4 6:28:34 PM .................................... .... amin(05/11/14 20:16:19) - > dd(05/11/14 21:17:04)

    
  

输出

Create_date ------------------------------------ Rtrail

  
    
      

05/11/14 20:16:19 PM .................................... .... amin(05/11/14 20:16:19) - > dd(05/11/14 21:17:04)

    
  

现在我想要以“** amin ”*开头的分割日期时间,并更新上一栏“创建日期”。 我如何在SQL.Need建议

先谢谢。

2 个答案:

答案 0 :(得分:1)

这适用于您提供的示例数据。这种形式非常脆弱。我会添加一些谓词来检查(和)的存在,并确保其中的值可以作为日期进行转换。我会帮助你。

update #Something
set create_date = SUBSTRING(Rtrail, charindex('(', Rtrail) + 1,  charindex(')', Rtrail) - charindex('(', Rtrail) - 1)

答案 1 :(得分:0)

您可以使用一些字符串解析来拉出日期。如果Rtrail日期始终以相同的字符开头和结尾,您可以使用类似以下查询的内容:

DECLARE @rtrail VARCHAR(256) = 'amin(05/11/14 20:16:19)->dd(05/11/14 21:17:04)'
    , @startIndex INT
    , @endIndex INT
    , @dateStringLength INT
    , @extractedDateString VARCHAR(256)
    , @convertedDate DATETIME

SET @startIndex = CHARINDEX('(', @rtrail) + 1 -- Add 1 to make it exclude the index character
SET @endIndex = CHARINDEX(')', @rtrail)
SET @dateStringLength = @endIndex - @startIndex
SET @extractedDateString = SUBSTRING(@rtrail, @startIndex, @dateStringLength)
SET @convertedDate = CONVERT(DATETIME, @extractedDateString)

-- Display the results
SELECT @startIndex
    , @endIndex
    , @extractedDateString
    , @convertedDate