Pourquoi une string ne peut-elle pas être égale à un varchar stocké?

La requête suivante ne renvoie aucun résultat:

select * from MyTable where MyVarChar = '99903' 

MyVarChar est une colonne varchar(20) not null .

Les données suivantes sont stockées dans la table (à la 'select *'):

 Id MyVarChar 1 99901 2 99902 3 99903 

Curieusement, si je fournis '99901' ou '99902' dans la comparaison, j'obtiens un résultat.

J'ai essayé lsortingm et rsortingm deux côtés de la comparaison sans succès.

Je suis … confus. : P Des pensées?

Essayez quelque chose comme ceci:

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

Cela returnnera n'importe quoi avec 99903 dedans, donc si vous avez des trucs supplémentaires à la fin (ou devant), ça marchera quand même. RTRIM() et LTRIM() auraient dû le faire pour vous.

Faire le cast à varbinary(max) suggéré par @Vladimir a montré l'espace caché: il s'est avéré être un CR+LF à la fin de la string.