由于ä,SQL查询返回错误的结果

时间:2012-11-06 12:49:33

标签: c# database

我在db中有一个带有此内容的项目:

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();

返回没有这样的项目。我认为这是因为ä。怎么办?

2 个答案:

答案 0 :(得分:0)

简化您的查询,然后查看实际返回的内容。

例如,您可以查找包含“ä”的所有记录。如果得到结果,“ä”不是问题。

如果您没有获得结果,您可以查找包含“B& b / v”的所有记录。

无论哪种方式,当你得到一个结果时,看看该结果中的内容及其编码方式(是ASCII,UTF-8,......?)然后你就会知道如何修改你的查询以获得正确的记录。

祝你好运!

答案 1 :(得分: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()的结果很接近但不完全等于您的DB记录。 HtmlEncode()使用数字实体而不是字母版本。

但这可能会为您提供如何解决问题的线索。我仍然强烈建议不要搜索字符串,而是使用数字PK值。我认为这个问题很难解决。