在我们开始之前,这是一个糟糕的情况/设计,但我无法修复设计,因为我(我的公司)不拥有的应用程序和数据库使用该列。我也不控制新值或旧值。
我有一张类似的表:
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 :(得分:1)
只需在临时表中获取列值,然后尝试更新
SET @STRSQL = 'SELECT ''' + REPLACE('Yourcolumn, ',',
''' ,(your saparator)''') + ''''
DECLARE @tbl TABLE
(
col1 VARCHAR(100) ,
)
INSERT INTO @tbl
EXECUTE ( @STRSQL
)