2

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

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

我想做的是让某人通过简单地输入 Chateau 来搜索类似 Château 这个词。

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

4

2 回答 2

1
select 
    product_name 
from 
    products 
where 
    product_name Collate SQL_Latin1_General_CP1_CI_AI like 'Chateau'
于 2009-11-24T11:04:15.250 回答
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。如果您需要帮助,请告诉我们。

于 2009-11-24T11:01:05.473 回答