如何在 Sqlite 中实现重音/变音符号不敏感搜索? [复制]
Posted
技术标签:
【中文标题】如何在 Sqlite 中实现重音/变音符号不敏感搜索? [复制]【英文标题】:How to implement the accent/diacritic insensitive search in Sqlite? [duplicate] 【发布时间】:2010-10-21 06:14:18 【问题描述】:有没有办法在 sqlite 中进行重音/变音符号不敏感搜索?
谷歌搜索,我找到了this,但我真的不知道如何在 C# 中创建我的“排序函数”。我正在尝试为 Sqlite 创建 pt-br 排序规则...
【问题讨论】:
道格的回答对您有帮助吗?如果是,请分享您如何设法进行不区分重音/变音符号的搜索? 【参考方案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 引擎访问表。
【讨论】:
以上是关于如何在 Sqlite 中实现重音/变音符号不敏感搜索? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
Ruby 超级不敏感的正则表达式将学校名称与口音和其他变音符号匹配