2011-06-16 19 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>','')