我使用Java和休眠3.2.5.ga空。按日期排序上升與去年
我有一個日期列的表。我想創建一個hql查詢,它將按日期升序對結果進行排序,但會將空值置於最後。
通常我按日期排序ASC首先返回空值和「NULL LAST」關鍵字不起作用。
我怎樣才能做到這一點?
我使用Java和休眠3.2.5.ga空。按日期排序上升與去年
我有一個日期列的表。我想創建一個hql查詢,它將按日期升序對結果進行排序,但會將空值置於最後。
通常我按日期排序ASC首先返回空值和「NULL LAST」關鍵字不起作用。
我怎樣才能做到這一點?
使用這樣的查詢:
SELECT YourDateColumn
FROM YourTable
WHERE YourCondition
ORDER BY
CASE WHEN YourDateColumn IS NULL THEN 1 ELSE 0 END,
YourDateColumn
謝謝!即使在hql上也是如此 – 2012-02-16 12:37:49
我有一種變通方法解決方案,可能不是正確的方式,但你能想到在數據庫中有一個額外的列「臨時」的,並定義一個觸發器,將更新臨時值每次有更新的日期列並在該觸發器中,如果日期爲NULL,則將temp值設置爲100,並且如果它未將temp值設置爲0。
現在,在您的查詢的臨時遞增,日期遞增,由所有NOT NULL日期放在前面,然後日期它們是NULL
PS做一個排序:我還沒有嘗試過自己,所以只是試試看
它會工作,但非常unelegant更改架構只是這樣我就可以排序 – 2012-02-16 11:10:33
完全同意,或者你可以嘗試將日期設置爲一些默認值,如果它的NULL,然後嘗試做一個排序。 – Rocky 2012-02-16 11:13:07
將一個SQL解決方案夠嗎?如果是這樣的話,DBMS是什麼? – 2012-02-16 11:21:14