按日期升序排序,最后为空

时间:2012-02-16 10:58:00

标签: java sql hibernate hql

我使用java和hibernate 3.2.5.ga。

我有一个带有日期列的表。我想创建一个hql查询,它将按日期升序对结果进行排序,但会将空值放在最后。

通常我按日期排序asc首先返回空值,“NULL LAST”关键字不起作用。

我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:5)

使用这样的查询:

SELECT YourDateColumn
FROM YourTable
WHERE YourCondition
ORDER BY
  CASE WHEN YourDateColumn IS NULL THEN 1 ELSE 0 END,
  YourDateColumn

答案 1 :(得分:0)

我有一个解决方法,可能不是正确的方法,但你可以想到在数据库中有一个额外的列“temp”并定义一个触发器,它会在每次更新日期列时更新临时值在该触发器中,如果日期为NULL,则将temp值设置为100,如果未将temp值设置为0。

现在在你的查询中按temp asc,date asc进行排序,首先是所有NOT null日期,然后是NULL的日期

PS:我自己没试过,所以试试吧