2015-10-06 101 views
-2

在我们开始之前,这是一个糟糕的情况/设计,但我无法修复设计,因为该列由我(我的公司)不应用的应用程序和数据库使用,自己的。我也不控制新旧值。在列中更新逗号分隔值

我有一个类似的表:

Create Table #tblCRigrationTest 
( 
    ReasonString VarChar(1000), 
    ReasonStringNew VarChar(1000) 
) 

随着数据是这样的:

Insert Into #tblCRigrationTest (ReasonString, ReasonStringNew) 
Values ('5016|5005|5006|5032|5020|5010|5007|5011|5012|5028|5024|5008|5029', '') 

我需要做的是“循环”,通过每个ID,并根据其价值,更新它将它连接成一个新的字符串,然后将它存储在ReasonStringNew列中。新的ID出现在下面的第二列:

Old  New 
--------------  
5005  1 
5006  2 
5020  3 
5032  4 
5010  5 
5007  6 
5011  7 
5012  8 
5028  9 
5024  10 
5008  11 
5016  12 
5009  13 
5029  14 

有关如何做到这一点的任何建议?

+0

谷歌'SQL拆分Function' –

+0

与CASE – Mihai

+0

为什么downvote更换? –

回答

0

只是把你的列值在一个临时表,然后尝试更新

SET @STRSQL = 'SELECT ''' + REPLACE('Yourcolumn, ',', 
               ''' ,(your saparator)''') + '''' 

      DECLARE @tbl TABLE 
       (
        col1 VARCHAR(100) , 

       ) 

      INSERT INTO @tbl 
        EXECUTE (@STRSQL 
          ) 
+0

即使你是唯一回答,你的赢家......我希望有更多的动态解决方案,但至少你提供了一个。 (我已经知道我需要使用替换:)) –