使用来自C#的NHibernate,只使用与MS SQL Server 2005/2008(最好是Oracle)兼容的HQL(而不是SQL)。
有没有办法编写order by子句,以便nulls将在查询结果的末尾排序,而非null结果将按升序排序?
根据nickf引用的问题的答案,答案是:
select x from MyClass x order by case when x.MyProperty is null then 1 else 0 end, x.MyProperty
答案 0 :(得分:0)
我不知道这是否有帮助,但有another question asking the same thing about how to do this with MySQL。
也许同样的逻辑可以应用于HQL?
编辑:这被接受了,显然是的,是的。
以下是该问题的答案(Bill Karwin):
SELECT * FROM myTable
WHERE ...
ORDER BY CASE WHEN myDate IS NULL THEN 1 ELSE 0 END, myDate;
答案 1 :(得分:0)
有一次,我放弃并修复了我的集合类中的排序顺序。
由于我只是移动NULL,所以我所要做的就是在集合开头剥离空值并将它们追加到最后。
打赌切割器编码,甚至可以在阵列上完成。
然而,ORDER BY CASE是一个切割器和可读技巧。