2011-11-27 62 views
0

在我的SQL表Image,當我執行搜索查詢SQL不能搜索

SELECT * FROM Image WHERE platename LIKE 'WDD 666' 

它返回任何結果(使用其他列進行搜索,那麼沒問題)。

所有的列數據都是由C#代碼插入的。 (如果輸入數據手動搜索工程。) SQL
現在我懷疑單詞WDD 666不是英文字母。這可能嗎?

在c#中, 通過使用tesseract包裝string type生成板號。

我應該做搜索的車牌號碼?

在此先感謝和抱歉,我的英語不好。

+0

platename的trim()和len()是什麼,即SELECT'*'+ plateName +'*',len(plateName) 。你可能有額外的非打印字符在該領域... – Sparky

+0

這可能是你有不同的排序規則設置比你的查詢使用。檢查此問題出來http://stackoverflow.com/questions/531453/sql-server-2008-difference-between-collat​​ion-types –

回答

2

因爲你的情況相符,我要排除區分大小寫。

可能有前導或尾隨空格 - 試試這個..

SELECT * FROM Image WHERE platename LIKE '%WDD 666%'

+0

感謝它的工作原理,順便說一句,現在我試過了 SELECT * FROM Image WHERE platename LIKE'WDD %」 ,但不能.. – KayX

+0

你的列是VARCHAR - 所以不會有尾隨空格,但有很好的可通往空格。嘗試使用領先的'%'符號。 –

1

嘗試運行此命令:

SELECT '*'+plateName+'*',len(plateName) 
FROM image. 

我懷疑platename在該領域的一些非打印字符。

它似乎是數據末尾的CR/LF。您可以使用

UPDATE image SET plateName = replace(plateName,char(13)+char(10),'') 
WHERE plateName like '%'+char(13)+char(10)+'%' 

如果你得到一個積極的行數,你就會知道有CR/LF數據,並將其取出。如果你之後運行select,你的長度應該是7和8根據你的樣本數據

+0

它顯示 * WDD 666 * 9 * WLA 7564 * 10 – KayX

+0

這表明你已經在現場得到額外的,不可打印的字符。雖然通配符回答上面將努力獲得的記錄,確保使用檢索到的數據正確地與非打印字符交易代碼... – Sparky

+0

作爲拉吉指出,VARCHAR()數據將防止尾隨數據(空格)所以我懷疑你有回車,在數據的末尾換行。 – Sparky