SQL - 使用另一个字段中的部分字符串更新字段

时间:2017-09-26 02:22:12

标签: sql-server string date datetime sql-update

我不确定这是否可以通过正则表达式或其他一些奇特的解决方案来完成,但这是我需要做的事情。

A列:标准SQL日期时间值

B列:varchar字段,其中包含从

中提取数据所需的值

典型的B列值如下所示: 以下是对本文档的一些评论创建日期:2011-08-17T20:10:3​​3Z修改日期:2011-06-22T17:54:23Z

创建日期/修改日期来自其他系统,并插入此字段以供最终用户查看。

我想要做的是拉出创建日期值并更新列A以匹配。我意识到我需要做一些日期时间格式转换,但这个脚本实际上有多难?我无法找到从该字符串中拉出创建日期:2011-08-17T20:10:3​​3Z 的方法,并将其用作更新列A的值。如果转换该日期价值证明太难了,只使用此日期部分是可以接受的,例如' 2011-08-17'

谢谢!

1 个答案:

答案 0 :(得分:0)

尝试看看它是否有效..基本上这会找到第一个Date并从那里获取值,然后是第二个日期和后面的值..这假设您的所有条目都遵循您指定的相同格式。

DECLARE @x varchar(100) = 'blah blah Create Date: 2011-08-17T20:10:33Z Modify Date: 2011-06-22T17:54:23Z';

SELECT @x original_data 

, CHARINDEX('Date:',LTRIM(RTRIM(@x))) FirstIndexOfdate 

,CHARINDEX('Date:',LTRIM(RTRIM(@x)), (CHARINDEX('Date:', LTRIM(RTRIM(@x)) )+1)) SecondIndexOfdate 

,substring (@x,CHARINDEX('Date:',LTRIM(RTRIM(@x)))+5,11) first_date 

,substring (@x,CHARINDEX('Date:',LTRIM(RTRIM(@x)), (CHARINDEX('Date:', LTRIM(RTRIM(@x)) )+1)) +5,11)