[英]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.