2013-03-05 50 views
-4

我與同逗號分隔的代碼串的原料,SQL存儲過程轉換代碼字符串文本與代碼

例如:

@inputText = "1,2,3,4,5" 

,我需要一個轉換到:

@outputText = "apple, peach, orange, banana, onion" 

我有代碼表:

id name 
-- ---- 
1 apple 
2 peach 
3 orange 
4 banana 
5 onion 

我正在使用sql server 2008

我需要這樣做的存儲過程代碼,謝謝。

+0

的答案嗎? MySQL,SQL * Server,Postgresql?你試過什麼了? – Raad 2013-03-05 10:47:35

+0

我編輯了這個問題,並添加了sql server 2008 – kobe 2013-03-05 10:49:10

回答

4

您可以使用LIKE一起FOR XML PATH替換逗號分隔列表中的值:

declare @text varchar(50) = '1,2,3,4,5' 

;with cte as 
(
    select @text list 
) 
select 
(
    select ', '+c.name 
    from codes c 
    where ','+t1.list+',' like '%,'+cast(c.ID as varchar(10))+',%' 
    for xml path(''), type 
).value('substring(text()[1], 3)', 'varchar(max)') as NewList 
from cte t1 

這是基於@Mikael Eriksson您正在使用什麼數據庫

+0

+ 5的優秀解決方案;) – 2013-03-05 11:45:22

+0

*** + 7 ***從我身邊。 – Kermit 2013-03-05 19:12:51

相關問題