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

SQL Server如何同等处理空字符串与NULL 拼接有效列值为指定格式

解决方案

你可以通过CASE判断过滤NULL+空字符串,配合CONCAT_WS函数实现需求,CONCAT_WS会自动忽略NULL值,不会生成多余的逗号,示例代码如下:

SELECT
  ISNULL(
    NULLIF(
      CONCAT_WS(
        ',',
        -- 逐列判断,只有非NULL且非空字符串才生成对应格式字符串
        CASE WHEN A IS NOT NULL AND A <> '' THEN CONCAT('A:', A) END,
        CASE WHEN B IS NOT NULL AND B <> '' THEN CONCAT('B:', B) END,
        CASE WHEN C IS NOT NULL AND C <> '' THEN CONCAT('C:', C) END,
        CASE WHEN D IS NOT NULL AND D <> '' THEN CONCAT('D:', D) END
      ), ''
    ), ' '
  ) AS format_result
FROM 你的表名

逻辑说明

  1. 对每一列单独做CASE判断:仅当列值非NULL且不是空字符串时,返回列名:列值格式的字符串,否则返回NULL
  2. CONCAT_WS函数用逗号作为分隔符拼接所有非NULL的结果,自动跳过NULL值,不会出现多余的逗号或者空项(你遇到的A:,B:这类问题就会被解决)
  3. 如果所有列都不符合条件,CONCAT_WS会返回空字符串,用NULLIF将空字符串转为NULL后,再通过ISNULL返回要求的单空格' '

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 04:45:07