2013-03-26 196 views
0

如何轉換這樣的:將逗號分隔的值列表轉換爲單個逗號分隔的字符串?

('xxx','yyy','zzz') 

進入這個:

('xxx,yyy,zzz') 

使用T-SQL?

+1

這個第一個值來自哪裏?它是*一個字符串*? – 2013-03-26 16:54:49

+0

作爲一組參數?我不明白。你如何將一組參數傳遞給SQL Server,並期望它將其解釋爲單個字符串? – 2013-03-26 16:57:09

+1

它是一組輸入參數 - 類型nvarchar(30) – 2013-03-26 16:57:16

回答

0

通過連接值(這意味着單個列)?

SELECT (col1 + ',' + col2+ ',' + col3) 
FROM tableName 
+0

該列表來自外部作爲一組參數。 。 – 2013-03-26 16:56:24

+0

一組參數?也許@AaronBertrand的回答會幫助你解決這個問題。 – 2013-03-26 16:57:49

1
DECLARE @x VARCHAR(32) = '''xxx'',''yyy'',''zzz'''; 
SELECT REPLACE(@x, ''',''', ','); 

如果你想要做的是串聯,那麼你可以這樣做:

SELECT @param1 + ',' + @param2 + ',' ... + @param30; 

然而這僅僅是愚蠢恕我直言。這就像分別清洗每一隻襪子一樣。

我不得不質疑你現在要做什麼,如果這些是獨立的實體,爲什麼他們在第一個地方逗號分隔?也許你應該看看table-valued parameters而不是這個逗號分隔值的廢話,那麼你可以從一開始就以基於集合的方式使用這些值。

+0

我..好的...它並不那麼簡單。我使用模板和模板值生成查詢。一些模板值來自不同的數據源,並通過代碼組合在一起。最終腳本如下所示:「從TableA中選擇A,B,C,其中A爲('xxx','yyy','zzz')」。在大多數情況下,這已經足夠了。 – 2013-03-26 17:04:02

+0

但是有時候我們需要做一些類似於:「Select * from TableB where B ='xxx,yyy,zzz'」 – 2013-03-26 17:05:26

+0

所以爲了不改變生成腳本的邏輯,我正在尋找一種方法來連接這些「參數「在SQL服務器端運行。 – 2013-03-26 17:06:20