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

问题描述:

我不确定这是否可以使用除正则表达式或其他一些奇特的解决方案之外的任何其他功能来完成,但这里是我需要做的。SQL - 使用另一个字段的字符串的一部分更新字段

A栏:标准SQL的日期时间值

B栏: 下面是关于这一些意见:有,我需要从

提取数据的典型列B值会是什么样值varchar字段document创建日期:2011-08-17T20:10:3​​3Z修改日期:2011-06-22T17:54:23Z

创建日期/修改日期源自另一个系统,并插入此字段以供审查用户。

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

谢谢!

+0

你还没说过你到目前为止试过的东西!这里有一个提示,让你开始... DECLARE @x varchar(100)='等等创建日期:2011-08-17T20:10:3​​3Z修改日期:2011-06-22T17:54:23Z'; SELECT @x original_data ,CHARINDEX( '日期:',LTRIM(RTRIM(@x)))FirstIndexOfdate ,CHARINDEX( '日期:',LTRIM(RTRIM(@x)),(CHARINDEX( ' - ' ,LTRIM(RTRIM(@x)))+1))SecondIndexOddate GO 看看我要去哪里? – Harry

+0

谢谢你。我没有发布任何内容的主要原因是我对正则表达式不太好。所以如果正则表达式是唯一的方法,那么我需要找到正确地做到这一点的帮助。你认为这是唯一的选择吗? – mikecferrara

+0

根本不是......我上面的代码会给你第一个日期的位置:第二个日期:在列内......你应该能够基于此提取值。给它一个去看看你是否可以得到价值..别的可以提供更多的帮助..这可能是更好的方式比给你在代码中的确切答案。 – Harry

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

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)