2012-11-06 117 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

ä问题如'%ä%'无法返回结果。 –