admin

更改NULL在排序中的位置

sql

我正在整理一张桌子。小提琴可以在这里找到。

CREATE TABLE test
(
field date NULL
);

INSERT INTO test VALUES
('2000-01-05'),
('2004-01-05'),
(NULL),
('2008-01-05');

SELECT * FROM test ORDER BY field DESC;

我得到的结果是:

2008-01-05
2004-01-05
2000-01-05
(null)

但是我需要结果是这样的:

(null)
2008-01-05
2004-01-05
2000-01-05

因此,将NULL值视为高于任何其他值。有可能这样做吗?


阅读 197

收藏
2021-07-01

共1个答案

admin

最简单的是先添加一个额外的排序条件:

ORDER BY CASE WHEN field is null then 0 else 1 END,field DESC

或者,您可以尝试将其设置为其数据类型的最大值:

ORDER BY COALESCE(field,'99991231') DESC

COALESCE/ISNULL可以正常工作,但前提是您没有使用相同最大值的“真实”数据。如果这样做,并且需要区分它们,请使用第一种形式。

2021-07-01