【问题标题】:How to implement the accent/diacritic insensitive search in Sqlite? [duplicate]如何在 Sqlite 中实现重音/变音符号不敏感搜索? [复制]
【发布时间】:2010-10-21 06:14:18
【问题描述】:

有没有办法在 sqlite 中进行重音/变音符号不敏感搜索?

谷歌搜索,我找到了this,但我真的不知道如何在 C# 中创建我的“排序函数”。我正在尝试为 Sqlite 创建 pt-br 排序规则...

【问题讨论】:

  • 道格的回答对您有帮助吗?如果是,请分享您如何设法进行不区分重音/变音符号的搜索?

标签: c# database sqlite search collation


【解决方案1】:

虽然可以编写自己的排序规则,但这可能比使用合适的系统提供的排序规则要慢 - 例如,SQL_Latin1_General_CP1_CI_AS 不能满足您的需求吗?如果是这样,只需使用合适的 COLLATE 子句(在您的 SELECT 或 CREATE TABLE 查询中使用......),您应该已经准备好了。

【讨论】:

  • 这种排序规则在 SQlite 中是否可用?
【解决方案2】:

如果您使用的是 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 引擎访问表。

【讨论】:

    猜你喜欢
    • 2012-09-19
    • 1970-01-01
    • 2015-09-28
    • 2013-07-25
    • 2015-09-28
    • 1970-01-01
    • 2011-11-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多