【问题标题】:sqlite-net - ordering by string Case Insensitive Accent Insensitivesqlite-net - 按字符串排序 不区分大小写 不区分重音
【发布时间】:2014-06-11 04:59:00
【问题描述】:

如何按 varchar 列不区分大小写和不区分变音符号进行排序。

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

SELECT name FROM users ORDER BY name ASC

结果是:

  • 爱丽丝
  • 鲍勃
  • 科尔
  • 戴尔
  • 艾薇儿
  • 卡尔
  • 阿提拉

但我希望它像这样排序:

  • 爱丽丝
  • 阿提拉
  • 艾薇儿
  • 鲍勃
  • 卡尔
  • 科尔
  • 戴尔

【问题讨论】:

    标签: sqlite sqlite-net


    【解决方案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());
      

    对于变音符号不敏感排序(也称为 Accent Insensitive),只能通过在插入 db 之前删除变音符号,或在内存中排序来按需删除变音符号。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-19
      • 2015-03-10
      • 2010-09-05
      • 1970-01-01
      • 2013-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多