簡體   English   中英

如何將自定義排序規則應用於SQLite數據庫的特定列?

[英]How to apply a custom collation to specific columns of an SQLite database?

在使用iBATIS.NET將數據映射到SQLite數據庫的C#應用​​程序中,我希望能夠按與英文字母稍有不同的字母(有一些特殊字符,並且某些字符的順序不同)對特定的列進行排序。 我想從數據庫中獲取已經排序的結果,因為由於分頁,無法對應用程序本身進行排序。

經過一些研究,我得出結論,在此處應用自定義排序規則可能是唯一的選擇。 這個結論正確嗎?

但是,我無法確定在上述情況下該如何完成。 iBATIS API似乎與排序規則無關,我看不出有一種明顯的方法可以對數據庫配置進行修補。 那么,這怎么辦呢?

用戶定義的函數和排序規則是ADO.NET驅動程序的功能,而不是位於其頂部的ORM。 SQlite ADO.Net驅動程序允許您定義自定義函數,請檢查此問題的第二個答案

/// <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);
  }
}

您需要先在代碼中注冊該功能,然后才能與

SQLiteFunction.RegisterFunction(typeof(MySequence));

性能可能是個問題,因為您每次進行比較時都要支付Interop通話的費用

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM