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