use*_*455 5 sqlite sql-order-by android-sqlite
我有一个contacts包含列的表名[ "id","name","age" ]。我需要按名称升序排列所有联系人。我为其编写了以下查询:
Select * from contacts order by name collate nocase asc;
Run Code Online (Sandbox Code Playgroud)
我从上面的查询得到的结果如下:
1. 11 | #ax Nene | 21
1. 21 | 123 Ray | 22
1. 33 | maxy Wel | 25
1. 41 | Max Vele | 23
1. 53 | Nam sing | 25
Run Code Online (Sandbox Code Playgroud)
上面的顺序很好,但我希望以特殊字符 [#、$ 或任何其他非字母] 开头的名称位于结果的底部而不是顶部。我应该在查询中修改哪些内容才能获得所需的结果。
注意:我正在使用 sqlite。
您必须~在任何此类字符串前面添加一些字符(按字母排序)。当您仅在 ORDER BY 子句中执行此操作时,它仅影响排序而不影响返回值:
SELECT *
FROM contacts
ORDER BY CASE WHEN name GLOB '[A-Za-z]*'
THEN name
ELSE '~' || name
END COLLATE NOCASE;
Run Code Online (Sandbox Code Playgroud)
(COLLATE NOCASE使排序不区分大小写。)
| 归档时间: |
|
| 查看次数: |
2273 次 |
| 最近记录: |