2016-03-09 46 views
1

下面的查询不返回任何结果:为什么字符串不能与存储的varchar相等?

select * 
from MyTable 
where MyVarChar = '99903' 

MyVarChar是varchar(20) not null列。

以下的数据被存储在该表(一拉“选择*”):

Id MyVarChar 
1  99901 
2  99902 
3  99903 

有趣的是,如果我供应“99901”或“99902”在比较,得到了一个结果。

我试过ltrimrtrim两边比较没成功。

我很困惑。 :P有什么想法?

+3

您是否确定99903的记录中没有不可打印的字符?像一个选项卡或其他... – NotMe

+0

我不是。但是我怎么去测试呢? (除了修剪操作吗?) –

+4

你可以用'SELECT MyVarChar,LEN(MyVarChar)FROM MyTable'来测试它。结果的第二列中应该只有5个。 – trincot

回答

1

由@Vladimir建议演员varbinary(max)显示隐藏的空白:原来是在字符串末尾的CR+LF

1

尝试是这样的:

SELECT * 
FROM MyTable 
WHERE MyVarChar LIKE '%99903%'; 

,将返回在它99903东西,所以如果你有在年底(或前)额外的东西,它仍然会正常工作。 RTRIM()LTRIM()应该已经修复,但你。

相关问题