C# 存储不同语言时如何在sql server中搜索文本

C# 存储不同语言时如何在sql server中搜索文本,c#,sql-server,search,html-encode,C#,Sql Server,Search,Html Encode,我有一个网站,产品名称包含法语和英语单词。当我存储产品名称时,我将其存储为SQL Server中ProductName字段中编码的html。例如,单词chaáteau存储为Châ;teau在我的数据库中 如果有人想搜索产品名称,我会对搜索词进行htmlencode。这将成功返回搜索词Chateau的匹配项,但如果有人在Chateau中键入(大多数英语用户都会这样做),我不会从LIKE语句中返回任何结果。这是正确的,因为城堡与城堡不相配 我想做的是让某人通过简单地输入Chateau来搜索像

我有一个网站,产品名称包含法语和英语单词。当我存储产品名称时,我将其存储为SQL Server中ProductName字段中编码的html。例如,单词chaáteau存储为Châ;teau在我的数据库中

如果有人想搜索产品名称,我会对搜索词进行htmlencode。这将成功返回搜索词Chateau的匹配项,但如果有人在Chateau中键入(大多数英语用户都会这样做),我不会从LIKE语句中返回任何结果。这是正确的,因为城堡与城堡不相配

我想做的是让某人通过简单地输入Chateau来搜索像Chateau这样的词


你知道我该怎么做吗?我正在使用asp.net C#3.5 SP1和Sql Server 05。

一个简单的答案是使用排序规则转换;在您的情况下,请使用“不区分重音”排序规则,例如:

SELECT *
FROM table
WHERE ProductName COLLATE SQL_Latin1_General_Cp1_CI_AI LIKE 'Chateau' COLLATE SQL_Latin1_General_Cp1_CI_AI;
检查您的排序规则并根据需要调整它们(注意结尾“_AI”,意思是“不区分重音”)


更高级的选择是使用。如果您需要帮助,请告诉我们。

如果没有找到结果或结果之外的其他结果,则显示类似的拼音单词匹配如何?这将非常酷,但对于此解决方案,我所查看的任何示例都过于复杂。我想说的是,我可能只需要保存产品名称而不使用HTML编码,然后按照下面的示例使用排序规则转换。谢谢您的回答,但值存储为HTML编码。我已经更新了我的答案,使之更清晰-网站编辑器将我的值转换为html;)你会建议我在数据库中存储法语单词而不进行编码吗?谢谢。是的,直接用重音符号存储在数据库中。切勿在数据库中存储HTML编码的实体。
select 
    product_name 
from 
    products 
where 
    product_name Collate SQL_Latin1_General_CP1_CI_AI like 'Chateau'