我有一个应用程序,我命令使用ORDER BY子句对我的数据库进行查询,它将按字母顺序排序.我只有一个小问题,它经常发生,查询排序的字符串之一不包含任何内容(string =""),当按字母顺序排序时,这些字符串填充在列表顶部的前面,a,b, c ...我很简单,不想要这个.在我在oracle论坛上发现的大量谷歌搜索后,我应该将查询的SORT BY部分更改为"SORT BY xxx ASC NULLS LAST",这在查询时会导致致命错误.
我该如何解决这个看似很小的问题呢?
这是我今天的查询语句.
public Cursor fetchAllDatesByTag() {
return mdiktationsDb.rawQuery("SELECT " + KEY_DATEID + "," +" " + KEY_DATE + "," + " " + KEY_TIME + "," + " " + KEY_DICTTAG + "," + " " + KEY_DICTLISTIMAGE + " FROM " + DATABASE_TABLE + " ORDER BY " + KEY_DICTTAG + " ASC", null);
}
CASE在你的中使用等价物ORDER BY
喜欢
ORDER BY CASE column WHEN NULL THEN 1 ELSE 0 END, column
Run Code Online (Sandbox Code Playgroud)
所以它首先按空值排序,然后是实际列.
编辑:如果你想过滤""(空白字符串)或其他任何东西,你可以使用相同的方法...为它分配一个数值并在字母顺序排序之前进行排序.
EDIT2:
....+ " ORDER BY CASE " + KEY_DICTTAG + "WHEN NULL THEN 1 ELSE 0 END, " + KEY_DICTTAG + " ASC"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1472 次 |
| 最近记录: |