【问题标题】:Sorting NULL values in PostgreSQL [duplicate]在PostgreSQL中对NULL值进行排序[重复]
【发布时间】:2015-08-14 03:04:24
【问题描述】:

在 PostgreSQL 中,我在各种类型的列上使用 ORDER BYNUMERICTEXTBOOLEANTEXT[])。我正在设计一个 AJAX GUI,用户可以在其中按各个列交互地对记录进行排序(按升序和降序,在表格标题中使用熟悉的 ▲▼ 符号)。

问题是某些行包含NULL 值。一般来说,只有很少的这样的行(100/10000),它们包含的大部分是错误的数据,我不愿意隐藏,但也不想显示太多。我想要的是 NULL 值在使用 ORDER BY 时始终位于列表的末尾(用户只会在她导航到分页中的最后一页时看到它们),无论顺序是降序还是升序。

对于数字属性,例如,我发现NULL 值似乎被认为是最大的,因此在降序排序时出现在列表的顶部。这正是我不想要的。

我带来了一个丑陋的 hack,我很羞于展示,但会完成工作(在 python 中):

"COALESCE(value, '%sINFINITY')" % ('-' if sort_order == 'descending' else '')

如果它足够通用,我会将这个丑陋的家伙保留在我的代码中。但显然不是。它适用于整数、双精度和时间戳,但不适用于文本、布尔值等。仅仅因为没有(至少我没有找到任何)大于所有其他字符串的最大字符串常量,例如无穷大是最大的数字。确实,我可以将'ZZZZZ' 放入代码中,但这显然非常不卫生,所以我决定在这里问:)

还有其他优雅的方式来做我想做的事吗?

【问题讨论】:

标签: sql postgresql sorting null sql-order-by


【解决方案1】:

用途:

select ...
from ...
order by the_column nulls last;

documentation

【讨论】:

  • Ehh.. 你说的文档?已经听说过;)真不好意思,非常感谢!
猜你喜欢
  • 1970-01-01
  • 2012-02-28
  • 2017-04-30
  • 2023-03-28
  • 2021-12-03
  • 1970-01-01
  • 1970-01-01
  • 2016-06-05
  • 2011-12-28
相关资源
最近更新 更多