我正在整理表格。可以找到 fiddle here .
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 值被视为高于任何其他值。有可能吗?
最佳答案
最简单的方法是首先添加一个额外的排序条件:
ORDER BY CASE WHEN field is null then 0 else 1 END,field DESC
或者,您可以尝试将其设置为其数据类型的最大值:
ORDER BY COALESCE(field,'99991231') DESC
COALESCE
/ISNULL
工作正常,前提是您没有使用相同最大值的“真实”数据。如果需要,并且需要区分它们,请使用第一种形式。
关于sql - 改变 NULL 在排序中的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10946632/