2

フランス語と英語の単語を含む製品名のあるWebサイトがあります。製品名を保存するときは、SQLServerのProductNameフィールドにエンコードされたhtmlとして保存します。たとえば、Châteauという単語は私のデータベースにChâteauとして保存されています。

誰かが製品名を検索したい場合は、検索語をhtmlencodeします。これにより、検索語Châteauに一致するものが正常に返されますが、誰かがChateauと入力した場合(ほとんどの英語ユーザーが入力します)、LIKEステートメントから結果が返されません。シャトーはシャトーと一致しないため、これは正しいです。

私ができるようにしたいのは、誰かが「Chateau」と入力するだけで、Châteauという単語のようなものを検索できるようにすることです。

私がこれについてどうやって行くことができるかについて何か考えはありますか?asp.net C#3.5SP1とSQLServer05を使用しています。

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」に注意してください)。

より高度なオプションは、全文検索を使用することです。それについてサポートが必要な場合はお知らせください。

于 2009-11-24T11:01:05.473 に答える