更新列中的逗号分隔值

时间:2015-10-06 12:58:34

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

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

我有一张类似的表:

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

有关如何执行此操作的任何建议吗?

1 个答案:

答案 0 :(得分:1)

只需在临时表中获取列值,然后尝试更新

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

            DECLARE @tbl TABLE
                (
                  col1 VARCHAR(100) ,

                )

            INSERT  INTO @tbl
                    EXECUTE ( @STRSQL
                           )