連續

2011-07-26 86 views
0

替換相應文本值的ID我有一排爲我提供值如下所示:連續

ClubbedValues 
----------------------------------------------------- 
561#557, 562#558, 563#559, 561#560, 562#560 
581#578, 581#579, 581#580 
561#557, 562#558, 562#559, 563#560 

我有一個主表,其中我對這些ID的文本值。例如:

Id  TextValue 
----------------------------------------------------- 
561 Value1 
562 Value2 
563 Value3 
564 Value4 
565 Value5 

現在我莫名其妙的願望以下的輸出:

ClubbedValues 
----------------------------------------------------- 
Value1#Value107, Value2#Value108, Value3#Value109 etc.. 

其中包括文本值在主表某處映射。

我希望你有這個問題....

任何幫助將不勝感激。

謝謝。

+1

我不確定您是否可以將數據庫用於較少關係的任何事物。 –

+1

這種模式設計非常可怕。重新設計數據庫的好處是可以通過簡單的SQL查詢來完成。你所要求的是可以做到的,但是需要這麼多的動態SQL和字符串操作,以至於不值得這樣做,並且可能會表現糟糕。 – mwigdahl

+0

可能的重複 - 不同的分隔符,但可能有幫助的幾種解決方案。 http://stackoverflow.com/questions/2740799/replace-with-wildcard-in-sql –

回答

1

您可以使用表變量和循環遍歷所有需要替換的值。

declare @T table(ClubbedValues varchar(max)) 
declare @Id int 
declare @Value varchar(10) 

-- Get the rows from YourTable that you need to process 
insert into @T 
select ClubbedValues 
from [your table] 

select top 1 
    @Value = TextValue, 
    @Id = Id 
from [master table] 
order by Id 

while @@rowcount > 0 
begin 
    update @T 
    set ClubbedValues = replace(ClubbedValues, cast(@Id as varchar(10)), @Value) 

    select top 1 
    @Value = TextValue, 
    @Id = Id 
    from [master table] 
    where Id > @Id 
    order by Id 
end 

select * 
from @T