我通常使用类似的结构:
ORDER BY CASE WHEN Location = 'ROOT' THEN '~' ELSE Location END
在ASCII环境中,这成功地将Location
ROOT
的所有记录推送到最后,而所有其他记录都正常排序。这是因为'〜'字符接近字符集的末尾。然而,随着使用比ASCII更广泛的字符集的数据库越来越普遍,我希望这种技术偶尔不起作用。
有什么替代方案?具体来说,我想要一种将字段中具有特定值的记录推送到列表末尾的技术。
我主要使用MS SQL,但我也对一般技术感兴趣,并且可以使用Oracle。
答案 0 :(得分:5)
要将Location = 'ROOT'
的值推到最后,请尝试以下操作:
ORDER BY CASE WHEN Location = 'ROOT' THEN 1 ELSE 0 END, Location
答案 1 :(得分:3)
ORDER BY CASE WHEN Location = 'ROOT' THEN 1 ELSE 0 END, Location