我的网站的产品名称包含法语和英语单词。当我存储产品名称时,我将其存储为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。
答案 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。如果您需要帮助,请告诉我们。