我有一个带有日期时间字段的SQL表格。该字段可以为空。我有一个查询,我想按照日期时间字段进行升序排序,但我希望日期时间字段为空的行出现在列表的最后而不是最前面。
是否有简单的方法来实现这个需求?
是否有简单的方法来实现这个需求?
order by case when MyDate is null then 1 else 0 end, MyDate
SELECT smoneCol1,someCol2
FROM someSch.someTab
WHERE someCol2 = 2101 and ( someCol1 IS NULL )
UNION
SELECT smoneCol1,someCol2
FROM someSch.someTab
WHERE someCol2 = 2101 and ( someCol1 IS NOT NULL)
UNION ALL
。 - D'Arcy RittichOrder by Col1 Asc Nulls Last, Col2 Asc Nulls First
如 a_horse_with_no_name 提供的答案中所述。
order by -cast([nativeDateModify] as bigint) desc
select * from MyTable order by NVL(MyDate, to_date('1-1-1','DD-MM-YYYY'))
这里是大多数知名数据库中NVL的替代方法的介绍
SELECT * FROM tablename ORDER BY CASE WHEN somefield IS NULL THEN 1 WHEN somefield = '' THEN 2 ELSE 0 END, somefield;