3

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

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

SELECT name FROM users ORDER BY name ASC

结果是:

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

但我希望它被排序为:

  • 爱丽丝
  • 阿提拉
  • 艾薇儿
  • 鲍勃
  • 卡尔
  • 油菜
  • 戴尔
4

1 回答 1

1

所以有两种不区分大小写的排序方法:

  1. ORDER BY写一个带子句的内联sql (很明显但不好的做法);

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

    connection.Table<User>()
        .OrderBy(user => user.Name, new CaseInsensitiveComparer());
    

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

于 2014-06-10T20:59:00.967 回答