Sql 使用CASE按顺序将一些记录推到末尾

Sql 使用CASE按顺序将一些记录推到末尾,sql,sql-order-by,case,Sql,Sql Order By,Case,我通常使用类似以下的构造: ORDER BY CASE WHEN Location = 'ROOT' THEN '~' ELSE Location END 在ASCII环境中,这成功地将位置为根的所有记录下推到末尾,而所有其他记录都正常排序。这是因为“~”字符接近字符集的末尾。然而,随着比ASCII更广泛字符集的数据库的普遍使用,我预计这种技术偶尔会不起作用 还有什么选择?具体来说,我需要一种技术,可以将字段中具有特定值的记录推送到列表的末尾 我主要使用MS SQL,但我也对一种通用技术感兴趣

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

ORDER BY CASE WHEN Location = 'ROOT' THEN '~' ELSE Location END
在ASCII环境中,这成功地将
位置
根的所有记录下推到末尾,而所有其他记录都正常排序。这是因为“~”字符接近字符集的末尾。然而,随着比ASCII更广泛字符集的数据库的普遍使用,我预计这种技术偶尔会不起作用

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


我主要使用MS SQL,但我也对一种通用技术感兴趣,这种技术将用于Oracle。

要使用
Location='ROOT'将值推到最后,请尝试以下方法:

ORDER BY CASE WHEN Location = 'ROOT' THEN 1 ELSE 0 END, Location 

哈,我的回答被拒绝了,因为在你添加评论之前,我们的答案是相同的:)
ORDER BY CASE WHEN Location = 'ROOT' THEN 1 ELSE 0 END, Location