2010-08-27 32 views
2

我想要做这样的事情,选择以逗号分隔值的列:SQL Server的逗号分隔列中的值

select column1+','+column2+','+column3+','+coulmn4 from someTable 

除非任何列持有空值我必须从添加逗号跳过列 如何做到这一点是SQL Server? [所有列是varchar类型所以没有铸造所需的]

回答

4

尝试

测试表

create table #testCol (column1 varchar(10), column2 varchar(10), 
column3 varchar(10), column4 varchar(10)) 

insert #testCol values('a', null,null,'b') 
insert #testCol values(null,'a',null,'b') 
insert #testCol values(null,'a','Z','b') 

查询

select isnull(column1,'')+ case when column1 is null then '' else ',' end 
+ isnull(column2,'')+ case when column2 is null then '' else ',' end 
+ isnull(column3,'')+ case when column3 is null then '' else ',' end 
+ isnull(column4,'') 
from #testCol 

输出
A,B
A,B
a,Z,b

+0

适合我的需要,非常感谢你 – Gopi 2010-08-27 17:07:11

0

你可以输出到csv,然后去掉所有的双逗号?

5
 

Select 
    Case When Len(IsNull(Column1),'') > 0 Then Column1 + ',' Else '' End, 
    Case When Len(IsNull(Column2),'') > 0 Then Column2 + ',' Else '' End, 
    Case When Len(IsNull(Column3),'') > 0 Then Column3 + ',' Else '' End, 
    Case When Len(IsNull(Column4),'') > 0 Then Column4 + ',' Else '' End, 
    Case When Len(IsNull(ColumnN),'') > 0 Then ColumnN + ',' Else '' End 
From 
    SomeTable 
 
+0

非常感谢你 – Gopi 2010-08-27 17:43:53

0
select isnull(column1 + ',', '') + isnull(column2 + ',', '') + isnull(column3 + ',', '') + isnull(coulmn4, '') from someTable