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

SQL Server存储过程返回数据含特殊空白,如何清除?

解决SQL返回数据中的空终止符及多余空白问题

问题根源

你看到的\0是ASCII码为0的空终止字符,SQL自带的LTRIM和RTRIM只处理普通空格(ASCII 32),对这种空字符完全无效,这就是为什么你处理后仍有异常内容。CSV里显示的DABBY |MILLER |,除了空字符,还可能残留未被修剪的首尾空格。


方法一:从SQL存储过程源头处理

修改字段的处理逻辑,先替换空终止符,再修剪首尾空格:

LTRIM(RTRIM(REPLACE([FNAME], CHAR(0), ''))) AS [FNAME]

CHAR(0)对应空终止符,用REPLACE把它彻底清空,再通过LTRIM/RTRIM处理普通空格,从根源解决数据脏的问题。


方法二:在C#应用层处理

如果没法修改SQL逻辑,就在读取数据后做清洗:

单字段处理

// 先修剪首尾空格,再移除所有空终止符
string cleanedName = rawName?.Trim().Replace("\0", string.Empty);

批量处理IEnumerable数据

假设你的数据实体是UserInfo,包含FNAME字段:

var cleanedList = rawData.Select(u => new UserInfo
{
    FNAME = u.FNAME?.Trim().Replace("\0", string.Empty),
    // 其他需要处理的字段同理操作
});

CSV写入注意事项

写入CSV时,确保分隔符是纯|,不要加额外空格,比如用String.Join("|", cleanedFields),避免人为引入间隙。


额外扩展:处理其他不可见空白

如果还存在制表符、换行符这类特殊空白,可进一步扩展处理:

// 移除所有空白类字符+空终止符
var cleanedStr = new string(rawStr?.Where(c => !char.IsWhiteSpace(c) && c != '\0').ToArray());

// 仅清除首尾的所有空白+空字符,保留中间正常空格
var cleanedStr = rawStr?.Trim().Replace("\0", string.Empty);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 03:02:14