如何不区分大小写和不区分变音符号按 varchar 列排序。
例如,我将执行以下查询:
SELECT name FROM users ORDER BY name ASC
结果是:
- 爱丽丝
- 鲍勃
- 油菜
- 戴尔
- 艾薇儿
- 卡尔
- 阿提拉
但我希望它被排序为:
- 爱丽丝
- 阿提拉
- 艾薇儿
- 鲍勃
- 卡尔
- 油菜
- 戴尔
如何不区分大小写和不区分变音符号按 varchar 列排序。
例如,我将执行以下查询:
SELECT name FROM users ORDER BY name ASC
结果是:
但我希望它被排序为:
所以有两种不区分大小写的排序方法:
ORDER BY
写一个带子句的内联sql (很明显但不好的做法);
SELECT name FROM user
ORDER BY UPPER(name) ASC
在内存中排序,使用带有 Linq 的 C# 将是这样的:
connection.Table<User>()
.OrderBy(user => user.Name, new CaseInsensitiveComparer());
对于变音符号不敏感排序(又名 Accent Insensitive),只能通过在插入 db 之前删除变音符号,或在内存中排序来按需删除变音符号。