sqliteでアクセント/分音記号を区別しない検索を行う方法はありますか?
グーグル、私はこれを見つけましたが、C#で「照合関数」を作成する方法が心からわかりません。Sqliteのpt-br照合を作成しようとしています...
System.Data.Sqliteを使用している場合は、カスタム照合シーケンスを使用して、必要に応じて変更できます...例:
/// <summary>
/// User-defined collating sequence using the current UI culture.
/// </summary>
[SQLiteFunction(Name = "MYSEQUENCE", FuncType = FunctionType.Collation)]
class MySequence : SQLiteFunction
{
public override int Compare(string param1, string param2)
{
return String.Compare(param1, param2, true);
}
}
上記のカスタム照合シーケンスを使用するSQLクエリは、次のようになります。SELECT * FROM MyTable ORDER BY MyChineseColumn COLLATE MYSEQUENCE DESC
(ソース:http ://sqlite.phxsoftware.com/forums/p/862/3779.aspx#3779 )
テーブルの作成時に照合を設定し、その列にインデックスを作成するだけです。ただし、照合が定義されていない他のsqliteエンジンからテーブルにアクセスすることはできません。
独自の照合順序を作成することは可能ですが、適切なシステム提供の照合順序を使用するよりも簡単に遅くなる可能性があります。たとえば、SQL_Latin1_General_CP1_CI_AS はニーズに応えませんか? その場合は、適切な COLLATE 句を使用するだけで (SELECT または CREATE TABLE クエリで...)、すべて設定されているはずです。