You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在T-SQL中拼接列并排除含空值的列片段?

解决T-SQL中带前缀的列拼接问题(自动排除空列片段)

刚好碰到过类似的需求,给你两种实用的实现方案,都能满足你的要求——既保留所有行(包括全空的行),又能自动排除空列对应的前缀+值片段:

方案1:利用COALESCE简化写法

这个方案利用T-SQL中「字符串与NULL拼接结果为NULL」的特性,再用COALESCE把NULL转为空字符串,从而自动跳过空列的片段:

SELECT 
    COALESCE('Column 1: ' + t.Column1, '') +
    COALESCE('Column 2: ' + t.Column2, '') +
    COALESCE('Column 3: ' + t.Column3, '')
FROM Table1 t

方案2:用CASE表达式更直观

如果想要逻辑更清晰,一眼就能看懂判断规则,推荐用CASE表达式:

SELECT 
    CASE WHEN t.Column1 IS NOT NULL THEN 'Column 1: ' + t.Column1 ELSE '' END +
    CASE WHEN t.Column2 IS NOT NULL THEN 'Column 2: ' + t.Column2 ELSE '' END +
    CASE WHEN t.Column3 IS NOT NULL THEN 'Column 3: ' + t.Column3 ELSE '' END
FROM Table1 t

额外说明:处理空字符串的情况

如果你的列可能存在**空字符串('')**而不仅仅是NULL,只需要把判断条件改成LEN(t.ColumnX) > 0或者t.ColumnX <> ''即可,比如:

SELECT 
    CASE WHEN t.Column1 <> '' THEN 'Column 1: ' + t.Column1 ELSE '' END +
    CASE WHEN t.Column2 <> '' THEN 'Column 2: ' + t.Column2 ELSE '' END +
    CASE WHEN t.Column3 <> '' THEN 'Column 3: ' + t.Column3 ELSE '' END
FROM Table1 t

这几种写法都不会过滤任何行,哪怕三个列全为空,最终结果就是空字符串,完全符合你的需求~

内容的提问来源于stack exchange,提问作者Mefhisto1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 06:51:20