2015-10-06 145 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

即使你是唯一回答,你的贏家......我希望有更多的動態解決方案,但至少你提供了一個。 (我已經知道我需要使用替換:)) –