【发布时间】:2014-06-11 04:59:00
【问题描述】:
如何按 varchar 列不区分大小写和不区分变音符号进行排序。
例如,我将执行以下查询:
SELECT name FROM users ORDER BY name ASC
结果是:
- 爱丽丝
- 鲍勃
- 科尔
- 戴尔
- 艾薇儿
- 卡尔
- 阿提拉
但我希望它像这样排序:
- 爱丽丝
- 阿提拉
- 艾薇儿
- 鲍勃
- 卡尔
- 科尔
- 戴尔
【问题讨论】:
标签: sqlite sqlite-net
如何按 varchar 列不区分大小写和不区分变音符号进行排序。
例如,我将执行以下查询:
SELECT name FROM users ORDER BY name ASC
结果是:
但我希望它像这样排序:
【问题讨论】:
标签: sqlite sqlite-net
所以只区分大小写排序有两种方法:
使用ORDER BY 子句编写内联sql(很明显但不好的做法);
SELECT name FROM user
ORDER BY UPPER(name) ASC
在内存中排序,使用 C# 和 Linq 会是这样的:
connection.Table<User>()
.OrderBy(user => user.Name, new CaseInsensitiveComparer());
对于变音符号不敏感排序(也称为 Accent Insensitive),只能通过在插入 db 之前删除变音符号,或在内存中排序来按需删除变音符号。
【讨论】: