在数据库查询中排序最后的空数据

Emi*_*il 3 sql android

我有一个应用程序,我命令使用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); }

Mat*_*hew 8

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)