sqlite-net - 按字符串排序Case Insensitive Accent Insensitive

时间:2013-11-29 15:51:50

标签: sqlite sqlite-net

如何根据varchar列不敏感地对变量进行排序,并且对变音符号不敏感。

例如,我会执行以下查询:

SELECT name FROM users ORDER BY name ASC

结果是:

  • 爱丽丝
  • 鲍勃
  • 科尔
  • 戴尔
  • 艾薇
  • 卡尔
  • ATILA

但是我想把它分类为:

  • 爱丽丝
  • ATILA
  • 艾薇
  • 鲍勃
  • 卡尔
  • 科尔
  • 戴尔

1 个答案:

答案 0 :(得分:1)

因此,不区分大小写的排序有两种方法:

  1. 编写一个带有ORDER BY子句的内联sql(显而易见但一个不好的做法);

    SELECT name FROM user
    ORDER BY UPPER(name) ASC
    
  2. 在内存中排序,使用C#与Linq将是这样的:

    connection.Table<User>()
        .OrderBy(user => user.Name, new CaseInsensitiveComparer());
    
  3. 对于变音符号不敏感的排序(又名Accent Insensitive),只有在插入db之前删除变音符号,或者在内存中排序才能按需删除变音符号。