2016-03-09 83 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()應該已經修復,但你。

相關問題