2011-06-16 62 views
2

是否有可能雙打的列轉換成一個大的字符串:SQL查詢,使一列數字的字符串

喜歡的東西:

att1 
---------- 
123.2 
3.6 
6.77 
23.43 
4.78 
7.6 
123.2 
9.6 
1.77 
3.43 
24.78 
76.6 
411.5 
346.5 
975.75 
162.788 
4.5 
16.2 
324.5 
746.5 
975.75 
12.788 
24.5 
6.2 


to 

string = " 
123.2, 
3.6, 
6.77, 
23.43, 
4.78, 
7.6, 
123.2, 
9.6, 
1.77, 
3.43, 
24.78, 
76.6, 
411.5, 
346.5, 
975.75, 
162.788, 
4.5, 
16.2, 
324.5, 
746.5, 
975.75, 
12.788, 
24.5, 
6.2 
"; 
+2

是的。在SO – 2011-06-16 02:57:13

+0

上問了很多次問題哪個數據庫? – Bohemian 2011-06-16 02:57:14

+0

測試數據庫... – cMinor 2011-06-16 02:57:56

回答

2
declare @List varchar(max) 

select @List = isnull(@List + ',', '') + cast(ColumnName as varchar) 
from MyTable 

print @List 

例如:

declare @List varchar(max) 

select @List = isnull(@List + ',', '') + cast(object_id as varchar) 
from sys.objects 

print @List 

or

select stuff(
    (select ',' + cast(object_id as varchar) 
    from sys.objects 
    for xml path('')), 
    1, 1, '') 
+0

還有一個問題....是否有可能告訴SQL Server根據索引爲特定的列執行此操作?還是必須將它作爲列名稱? – cMinor 2011-06-16 03:01:47

+0

@cMinor - 必須是列名稱。但是,使用動態SQL,您可以通過索引獲取列名稱。 – 2011-06-16 03:03:51

1

我不認爲這是最好的解決方案,但我以前遇到過類似的問題。使用SQL Server,我只是將數據解析爲一個XML字符串,然後將實際的XML替換掉。這將其轉換爲逗號分隔的值列表。

REPLACE(
    REPLACE(
     REPLACE(
      (SELECT 
       some_field AS [data()] 
      FROM 
       some_table 
      FOR 
       XML PATH ('label')) 
     ,'</label><label>',',') 
    ,'</label>','') 
,'<label>','')