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

时间:2009-11-24 10:53:12

标签: c# sql-server search html-encode

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

如果有人想要搜索产品名称,我会对搜索字词进行编码。这将成功返回搜索词Château的匹配,但如果有人输入Chateau(大多数英语用户会),我不会从LIKE语句返回任何结果。这是正确的,因为Chateau与Château不匹配。

我希望能够做的就是让人们只需输入Chateau就可以搜索Château这个词。

我有什么想法可以解决这个问题?我使用的是asp.net C#3.5 SP1和Sql Server 05。

2 个答案:

答案 0 :(得分:1)

select 
    product_name 
from 
    products 
where 
    product_name Collate SQL_Latin1_General_CP1_CI_AI like 'Chateau'

答案 1 :(得分:0)

一个简单的答案是使用整理铸造;在您的情况下,使用“重音不敏感”排序规则,例如:

SELECT *
FROM table
WHERE ProductName COLLATE SQL_Latin1_General_Cp1_CI_AI LIKE 'Chateau' COLLATE SQL_Latin1_General_Cp1_CI_AI;

检查您的排序规则并根据需要进行调整(注意结尾为“_AI”,表示“重音不敏感”)。

更高级的选项是使用Full-Text Search。如果您需要帮助,请告诉我们。