C# SQLite-实现中文按拼音排序

分类:C#     发布:2022-04-01     来源:本站     浏览:394 次
如果我们在 SQLite 中写 SQL 语句:order by TownName asc(这里 TownName 是中文),会发现它并不是按中文拼音来排的序,这与我们想象的不一样,要怎样才能实现中文拼音排序呢?

其实是要我们自己写排序方法。

第一步、写排序方法

/// <summary>
/// SQLite 自定义排序规则,这里使用拼音升序。
/// </summary>
[SQLiteFunction(FuncType = FunctionType.Collation, Name = "PinYinAsc")]
class SQLiteFunction_Collation_PinYinAsc : SQLiteFunction
{
    public override int Compare(string x, string y)
    {
        return string.Compare(x, y);
    }
}
第二步、为 SQLite 注册自定义排序方法

// 为 SQLite 注册自定义排序方法
SQLiteFunction.RegisterFunction(typeof(SQLiteFunction_Collation_PinYinAsc));
在同一个进程中,注册一次就可以了,当然重复注册也不会出错。

第三步、SQL 中使用自定义排序

注意,就不是 order by TownName asc 了,而是:

order by TownName COLLATE PinYinAsc
这里 PinYinAsc 就是前面的 Name="PinYinAsc",如果名称不对,或者没有注册,执行 SQL 时会报错。

摘自:http://www.cftea.com/c/2020/08/12950.asp

如果觉得文章对您有帮助,您可以对我进行打赏 ¥1.56 元(金额随机^_^,每次刷新金额不同)。

请使用支付宝扫码支付

留言评论

*称  呼:
*联系方式: 方便与您取得联系,推荐使用邮箱。
*内  容:

已有评论

暂无数据

上一篇:Oracle常用统计语句

下一篇:Java绕过证书访问https的方法