Order By Last in SQL:强制一个值排在最后

Order By Last in SQL: Force a value to be last in the order

在SQL中,我用过

...ORDER BY name DESC NULLS LAST

效果非常好,但有什么方法可以将特定值设置为最后?比如一个空字符串(@EMPTY).

...ORDER BY name DESC (@EMPTY) LAST

我正在根据 table 上的用户选择动态构建 SQL,当用户更改排序顺序时,我也会更改 SQL 中的排序顺序。此外,用户可以选择按哪一列进行排序。我作为排序依据的列将是类型 text 或类型 int。当 column 的类型为 int 时,我不需要任何花哨的 ORDER BY,但我确实需要将 "" 的所有值强制到 ORDER BY 的末尾当 columntypetext.

谢谢!

您可以使用 case 作为排序顺序中的第一个元素:

order by
    case when name = '' then 1 else 0 end
,   name desc