我通常使用类似于以下的构造:
ORDER BY CASE WHEN Location = 'ROOT' THEN '~' ELSE Location END
在 ASCII 环境中,这成功地将所有带有 aLocation
的记录推ROOT
到最后,而所有其他记录都正常排序。这是因为 '~' 字符接近字符集的末尾。但是,随着字符集比 ASCII 更广泛的数据库的使用越来越普遍,我预计这种技术有时会不起作用。
有什么选择?具体来说,我想要一种将字段中具有特定值的记录推送到列表末尾的技术。
我主要使用 MS SQL,但我也对一种通用技术以及可与 Oracle 一起使用的技术感兴趣。