用逗号分隔连接 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
- 样本data/output
在较新版本的 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;
是否有其他方法可以用逗号分隔连接 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
- 样本data/output
在较新版本的 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;