有没有办法在sqlite中进行重音/变音符号不敏感搜索?
谷歌搜索,我发现this,但我真的不知道如何在C#中创建我的“校对功能”。我正在尝试为Sqlite创建pt-br排序规则...
答案 0 :(得分:6)
如果您使用的是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引擎中的表。
答案 1 :(得分:-2)
虽然可以编写自己的排序规则,但这可能比使用合适的系统提供的排序规则慢 - 例如,SQL_Latin1_General_CP1_CI_AS不能满足您的需求吗?如果是这样,只需使用合适的COLLATE子句(在SELECT或CREATE TABLE查询中......),你应该全部设置。