【问题标题】:SQL Server Comma Separated value among columns列之间的 SQL Server 逗号分隔值
【发布时间】:2011-04-04 22:12:25
【问题描述】:

我想通过执行以下操作将列选择为逗号分隔值:

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

除非任何列包含空值,否则我必须跳过该列添加逗号 这个是SQL Server怎么做的? [所有列都是 varchar 类型,因此不需要强制转换]

【问题讨论】:

    标签: sql-server-2005 tsql


    【解决方案1】:
    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

    【讨论】:

      【解决方案2】:

      试试

      测试表

      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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          【解决方案4】:
          select isnull(column1 + ',', '') + isnull(column2 + ',', '') + isnull(column3 + ',', '') + isnull(coulmn4, '') from someTable 
          

          【讨论】:

            猜你喜欢
            • 2012-09-08
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多