为什么字符串不等于存储的varchar?

时间:2016-03-09 22:11:50

标签: sql sql-server tsql

以下查询不返回任何结果:

select *
from MyTable
where MyVarChar = '99903'

MyVarChar是varchar(20) not null列。

以下数据存储在表格中(la' select *'):

Id    MyVarChar
1     99901
2     99902
3     99903

有趣的是,如果我提供' 99901'或者' 99902'在比较中,我得到了一个结果。

我在比较的两边都试过了ltrimrtrim但没有成功。

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

2 个答案:

答案 0 :(得分:1)

尝试这样的事情:

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

这将返回99903中的任何内容,所以如果你在最后(或前面)有额外的东西,它仍然可以工作。 RTRIM()LTRIM()应该已经解决了这个问题。

答案 1 :(得分:1)

对@Vladimir建议的varbinary(max)进行强制转换显示了隐藏的空白:结果是字符串末尾的CR+LF