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

MS-SQL字符串末尾特殊空格问题:TRIM函数无效排查

MS-SQL中字符串末尾特殊空格的异常情况

在MS-SQL环境里碰到一个特殊问题:部分字符串末尾存在ASCII码为32的空格,但这个空格不在SQL默认认定的字符串长度范围内,导致常规处理函数失效:

  • 调用TRIM()函数处理后,原字符串和处理后的结果会被判定为相等
  • LEN()函数返回的是去除该空格后的长度,实际空格位于SQL识别的字符串末尾之后

在十亿级数据量的SE_Keywords表中,仅发现143条这类异常数据。可以用以下SQL查询验证该现象:

select 
    k.Keyword, 
    len(k.Keyword) LenKeyword, 
    trim(k.Keyword) TrimKeyword, 
    case when k.Keyword=trim(k.Keyword) then 1 else 0 end isSame, 
    len(trim(k.Keyword)) LenTrimKeyword, 
    SUBSTRING(k.Keyword,len(k.keyword)+1,1) LastCharPlus1, 
    ASCII(SUBSTRING(k.Keyword,len(k.keyword)+1,1)) AsciiLastCharPlus1 
from #tk AdditionalSpaceAfterEndOfString 
inner join SE_Keywords k 
    on AdditionalSpaceAfterEndOfString.Keyword=k.Keyword 
    and AdditionalSpaceAfterEndOfString.Lang=k.Lang 
    and AdditionalSpaceAfterEndOfString.Country=k.Country 
order by k.DateAdded desc

查询结果会呈现这些特征:

  • isSame字段值为1,说明原字符串与TRIM处理后的字符串被判定相等
  • LenKeyword和LenTrimKeyword的数值完全一致
  • AsciiLastCharPlus1返回32,确认这个特殊空格的ASCII码

需要注意的是,TRIM()函数无法处理这类异常空格,只能通过以下语句筛选出这类数据:

SELECT Keyword, Lang, Country INTO #tk FROM se_keywords 
WHERE ASCII(SUBSTRING(Keyword,LEN(keyword)+1,1)) IS NOT NULL

内容的提问来源于stack exchange,提问作者Gregory Liénard

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 07:06:33