2012-08-06 56 views
0

我一直在考慮,可以包含由波浪線分隔的多個優惠代碼字符串中的字符串和重建123~125~126
我也有可能可以不定義父/子關係的表分裂從相關數據

tbl_allowed 
============ 
offercode varchar(15) 
parent_oc varchar(15) 

ex: 
offercode = 124 
parent_oc = 126 

我已經擁有了將採取分隔的字符串,並把它分解的功能,但我想利用字符串,內容比較什麼在tbl_allowed並通過在parent_oc在tbl_allowed替換任何存在的價值生成它列中包含offercode列中的值。如果沒有定義的關係存在,那麼就使用它自己。

這是一個offercode很簡單:

set @newOfferCode = (select top 1 coalesce(cac.offercode, @lOfferCode) 
from tbl_allowed cac 
where OfferCode = @lOfferCode or parent_oc = @lOfferCode) 

select coalesce(nullif(@newOfferCode,''), @lOfferCode) 

,但我有困難時,我有一個波浪線分隔的字符串。有任何想法嗎?

+1

如果你的分割函數返回一個表,那麼你可以簡單地用'tbl_allowed'中的值更新表。然後將結果重新組合爲單個字符串。 [This](http://stackoverflow.com/questions/1564980/building-a-comma-separated-list)顯示瞭如何建立一個逗號分隔列表。 – HABO 2012-08-07 00:24:38

回答

0

這是我最終做的。似乎工作。

CREATE TABLE #tempoffers(OfferCode varchar(15), NewOfferCode varchar(15)) 

    INSERT INTO #tempoffers 
    SELECT OutParam, null 
    FROM dbo.SplitString(@lOfferCode, '~') 

    update #tempoffers set NewOfferCode = coalesce(cac.offercode, mb.offerCode) 
    from #tempoffers mb 
    left outer join tbl_Allowed cac on mb.OfferCode = cac.parent_oc 

      -- building the new string 
    declare @newOfferCode varchar(5000) 
    SELECT @newOfferCode = COALESCE(@newOfferCode + '~', '') + NewOfferCode FROM #tempoffers 

    drop table #tempoffers 
    SELECT @newOfferCode as OfferCode