zoukankan      html  css  js  c++  java
  • sqlite 中文排序

    SQLite 默认排序为 UNICODE 编码序,与汉语拼音没有任何联系,而人们常习惯拼音序。
    解决方法在 C# 中其实很简单,但网上尚未见有任何中文资料说这事,只有 C 方法。以下我是通过一英文网页学到的。

    首先,定义和注入规则
    示例代码如下,很简单无须多解释。只有一点必须注意,对同一个函数只能注入一次,不得重复,所以注入语句写在主函数中再合适不过。

    [csharp] view plaincopy
    1.     static class Program {  
    2.   
    3.         // 主函数  
    4.         [STAThread]  
    5.         static void Main()  
    6.         {  
    7.             SQLiteFunction.RegisterFunction(typeof(SQLiteCollation_PinYin));    // 注入  
    8.             Config.Reload();  
    9.             Application.EnableVisualStyles();  
    10.             Application.SetCompatibleTextRenderingDefault(false);  
    11.             Application.Run(new MainForm());  
    12.             Config.Save();  
    13.         }  
    14.   
    15.         // 中文拼音排序规则  
    16.         [SQLiteFunction(FuncType = FunctionType.Collation, Name = "PinYin")]  
    17.         class SQLiteCollation_PinYin: SQLiteFunction {  
    18.             public override int Compare(string x, string y)  
    19.             {  
    20.                 return string.Compare(x, y);  
    21.             }  
    22.         }  
    23.     }  


    而后,使用
    使用时, SQL 代码不能简单地写上 ORDER BY XXX 了事,还得用上 COLLATE ,示例如下:

    1. SELECT * FROM Client_V  
    2. ORDER BY  
    3.     City COLLATE PinYin,  
    4.     Unit COLLATE PinYin,  
    5.     Name COLLATE PinYin;  

    COLLATE 便是指定规则, PinYin 便是上面 C# 代码中定义规则时的 Name = "PinYin" 。
    另外,用建表、建立索引时,也应当考虑使用 COLLATE ,这样才能让数据库快起来。

    转载于:http://blog.csdn.net/ch_fb/article/details/6682791

  • 相关阅读:
    Jquery尺寸
    Jquery 位置
    c#编码规范
    手机即时通信文章列表
    缺陷跟踪系统BugTracker。 以下对使用
    用正则表达式来匹配图片标签
    mvc 分页
    Asp.Net MVC4网站中自定义AuthorizeAttribute
    asp.net mvc4 身份验证问题无法绕过内置的Membership/Role机制
    HDU4712Hamming Distance随机化算法
  • 原文地址:https://www.cnblogs.com/08shiyan/p/2496491.html
Copyright © 2011-2022 走看看