用逗号分隔连接 SQL 列

Concatenate SQL columns with comma separated

是否有其他方法可以用逗号分隔连接 SQL 列。我正在使用以下逻辑进行连接。列 (col1,col2,col3) 可以有 null 个值。

select 
stuff(
        left(concat(col1,',',col2,',',col3),
            len(concat(col1,',',col2,',',col3)) -
        patindex('%[^,]%',reverse(concat(col1,',',col2,',',col3)))+1
            )
        ,1,
        patindex('%[^,]%',concat(col1,',',col2,',',col3))-1,''
    )
from mytable

在较新版本的 SQL 服务器中,您可以使用 concat_ws():

select concat_ws(',', col1, col2, col3)

在早期版本中,有多种方法。一个非常简单的是:

select stuff( concat(',' + col1, ',' + col2, ',' + col3), 1, 1, '')

您可以有条件地 concat 分隔符。如果任一列为 null 或空,这将输出一个空字符串。

select concat(col1,
              case when len(col2)>1 then ',' else '' end,
              col2,
              case when len(col3)>1 then ',' else '' end,
              col3) 
from your_table;

要在任一列为 null 或空时输出 null,请将 concat 包装在 nullif 中,如下所示

select nullif(concat(col1,
              case when len(col2)>1 then ',' else '' end,
              col2,
              case when len(col3)>1 then ',' else '' end,
              col3),'')
from your_table;