3

我通常使用类似于以下的构造:

ORDER BY CASE WHEN Location = 'ROOT' THEN '~' ELSE Location END

在 ASCII 环境中,这成功地将所有带有 aLocation的记录推ROOT到最后,而所有其他记录都正常排序。这是因为 '~' 字符接近字符集的末尾。但是,随着字符集比 ASCII 更广泛的数据库的使用越来越普遍,我预计这种技术有时会不起作用。

有什么选择?具体来说,我想要一种将字段中具有特定值的记录推送到列表末尾的技术。

我主要使用 MS SQL,但我也对一种通用技术以及可与 Oracle 一起使用的技术感兴趣。

4

2 回答 2

5

要将值推Location = 'ROOT'到最后,请尝试以下操作:

ORDER BY CASE WHEN Location = 'ROOT' THEN 1 ELSE 0 END, Location 
于 2012-09-19T14:46:03.330 回答
3
ORDER BY CASE WHEN Location = 'ROOT' THEN 1 ELSE 0 END, Location
于 2012-09-19T14:46:06.963 回答