我使用java和hibernate 3.2.5.ga。
我有一个带有日期列的表。我想创建一个hql查询,它将按日期升序对结果进行排序,但会将空值放在最后。
通常我按日期排序asc首先返回空值,“NULL LAST”关键字不起作用。
我怎样才能做到这一点?
答案 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:我自己没试过,所以试试吧