有没有办法在 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 查询中使用......),您应该已经准备就绪。