具有 NaN 值的 Postgres 订单列

Dan*_*uła 3 sql sorting postgresql

我在 postgres 中有一个数据库,在几列(int 类型)中我有 NaN 值。当我对 ASC 进行排序时,结果是正确的,例如:

0
1
2
3
4
NaN
Run Code Online (Sandbox Code Playgroud)

但是当我对 DESC 进行排序时,我得到了:

naN
4
3
2
1
0
Run Code Online (Sandbox Code Playgroud)

我知道 Postgres 将 NaN 值视为相等,并且大于所有非 NaN 值,但是有没有办法得到这个结果?

4
3
2
1
0
NaN
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

mel*_*ene 5

如果您的列不包含NULLs,您可以明确地将 NaN 转换为 NULL 并对其进行排序:

select *
from some_table
order by nullif(some_column, 'NaN') desc nulls last
Run Code Online (Sandbox Code Playgroud)