SQLite 默认排序为 UNICODE 编码序,与汉语拼音没有任何联系,而人们常习惯拼音序。
解决方法在 C# 中其实很简单,但网上尚未见有任何中文资料说这事,只有 C 方法。以下我是通过一英文网页学到的。
首先,定义和注入规则
示例代码如下,很简单无须多解释。只有一点必须注意,对同一个函数只能注入一次,不得重复,所以注入语句写在主函数中再合适不过。
解决方法在 C# 中其实很简单,但网上尚未见有任何中文资料说这事,只有 C 方法。以下我是通过一英文网页学到的。
首先,定义和注入规则
示例代码如下,很简单无须多解释。只有一点必须注意,对同一个函数只能注入一次,不得重复,所以注入语句写在主函数中再合适不过。
static class Program {
// 主函数
[STAThread]
static void Main()
{
SQLiteFunction.RegisterFunction(typeof(SQLiteCollation_PinYin)); // 注入
Config.Reload();
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MainForm());
Config.Save();
}
// 中文拼音比较规则
[SQLiteFunction(FuncType = FunctionType.Collation, Name = "PinYin")]
class SQLiteCollation_PinYin: SQLiteFunction {
public override int Compare(string x, string y)
SQLite中文排序:C#实现拼音排序

SQLite默认按UNICODE编码排序,不适用中文拼音排序。本文介绍如何在C#中实现SQLite中文拼音排序,通过创建并注入自定义的SQLiteCollation_PinYin类,实现SQL查询时使用COLLATE指定拼音排序。示例代码展示了如何注册和使用该排序规则,以优化数据库查询性能。
最低0.47元/天 解锁文章
1202





