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

SSMS执行SQL查询手动输入条件无结果复制值可查询问题排查

SSMS字符匹配异常问题排查

问题现象

执行如下查询时,手动输入A.J. Burnett作为查询条件无任何返回结果,右键复制表中存储的对应值粘贴到查询语句中时,可正常返回符合条件的行,手动输入内容与复制内容视觉上无任何差异:

SELECT TOP (10) * 
FROM pitch_aggregate 
WHERE BAT_NAME_FULL = 'A.J. Burnett';

排查过程

  1. 排查常见控制字符
    执行如下查询校验是否存在制表符、换行符、垂直制表符等常见控制字符:
SELECT BAT_NAME_FULL
FROM pitch_aggregate
WHERE BAT_NAME_FULL LIKE '%Burnett%'
    AND BAT_NAME_FULL LIKE '%'+CHAR(9)+'%' 
    OR BAT_NAME_FULL LIKE '%'+CHAR(10)+'%' 
    OR BAT_NAME_FULL LIKE '%'+CHAR(11)+'%';

查询无返回结果,排除上述控制字符导致的匹配问题。
2. 二进制转码校验
执行如下查询将字段值转换为二进制格式查看编码:

SELECT TOP (1) CONVERT(varbinary(100),BAT_NAME_FULL)
FROM pitch_aggregate;

返回结果为0x412E4A2E204275726E657474。
3. 模糊查询缩小异常范围
首先执行宽范围模糊查询:

SELECT * 
FROM pitch_aggregate 
WHERE BAT_NAME_FULL LIKE '%A.J.%'
ORDER BY BAT_NAME_FULL;

返回多条结果,包含A.J. Burnett对应的行。
调整模糊查询条件进一步缩小范围:

SELECT * 
FROM pitch_aggregate 
WHERE BAT_NAME_FULL LIKE '%A.J. B%'
ORDER BY BAT_NAME_FULL;

依然返回多条包含A.J. Burnett的结果,确认异常出现在A.J.和Burnett之间的空格位置。

根因定位

标准半角空格的ASCII码为32,表中存储的名称中间的空格为ASCII码160的非间断空格,二者编码不同,导致手动输入的标准空格无法匹配存储的非间断空格。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 23:45:03