我正在整理一张桌子。小提琴可以在这里找到。
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可以正常工作,但前提是您没有使用相同最大值的“真实”数据。如果这样做,并且需要区分它们,请使用第一种形式。
COALESCE
ISNULL