2012-11-06 113 views
0

的我在DB與此內容的項目:SQL查詢將返回錯誤的結果,因爲

B & b/v (stärrfood) - 1,0l 

這:

var item = (from x in db.tblMyTable where x.item_name == "B & b/v (stärrfood) - 1,0l" select x).First(); 

回報,有沒有這樣的項目。我認爲這是因爲ä。該怎麼辦?

+0

如果您按名稱檢索項目,我猜這是您系統中的常量。是否有可能通過ID/PK取回物品? – rie819

+1

@ rie819我在這裏按名稱檢索它,以簡化我的問題。 –

+0

相關:http://stackoverflow.com/questions/4887447/sql-query-and-unicode-issue –

回答

0

如果您的數據庫項目實際讀取

B & b/v (stärrfood) - 1,0l 

,而不是

B & b/v (stärrfood) - 1,0l 

那麼這個問題是清楚的;數據庫中的字符串已被HtmlEncoded。所以真正的問題是如何從第二個字符串到第一個字符串。

通常我會建議:

string encoded = HttpUtility.HtmlEncode("B & b/v (stärrfood) - 1,0l"); 
// encoded = "B & b/v (stärrfood) - 1,0l" 

和搜索編碼的變量,而不是。但是,HtmlEncode()的結果很接近,但不完全等於您的數據庫記錄。 HtmlEncode()使用數字實體而不是字母版本。

但是,這可能會爲您提供有關如何解決問題的線索。不過,我強烈建議不要搜索字符串,而是使用數字PK值。我認爲這個問題可能很難解決。

0

簡化查詢,然後查看實際返回的內容。

例如,您可以查找包含「ä」的所有記錄。如果你得到結果,「ä」不是問題。

如果您沒有得到結果,您可能會查找包含「B & b/v」的所有記錄。無論哪種方式,當你得到一個結果,看看結果是什麼,它是如何編碼的(是ASCII,UTF-8,...?)然後你就會知道如何修改你的查詢到找回正確的記錄。

祝你好運!

+0

ä問題如'%ä%'無法返回結果。 –