在每个查询中使用PostgreSQL按降序排序,空值排在最后

4
有没有配置选项或任何东西可以让我强制postgres在使用DESC排序的每个查询中使用NULLS LAST?我不想在我的应用程序中将所有查询从Criteria API重写为JPQL,而且似乎JPA Criteria API不允许设置nulls last选项。

1
可以通过使用类似 ORDER BY (column IS NULL), column DESC 的方法来解决无法对空值进行排序的问题。在默认情况下,falseASC 排序中排在前面,所以空值会放在最后。不过我不清楚配置方面的情况。 - Łukasz Kamiński
1个回答

2

不行。至少我从未听说过这样的事情。简单的检查也没有希望:

t=# select setting, name from pg_settings where name like '%null%';
 setting |         name
---------+-----------------------
 on      | array_nulls
 off     | transform_null_equals
(2 rows)

https://www.postgresql.org/docs/current/static/queries-order.html也没有提到这样的全局开关,只有以下内容:

NULLS FIRST和NULLS LAST选项可用于确定空值在排序顺序中出现在非空值之前还是之后。默认情况下,空值按照大于任何非空值的方式排序;也就是说,在DESC顺序下,默认为NULLS FIRST,在其他情况下为NULLS LAST。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接