1

以与 MS SQL Server 2005/2008(最好是 Oracle)兼容的方式使用 C# 中的 NHibernate 和仅 HQL(不是 SQL)。

有没有办法编写 order by 子句,以便空值将在查询结果的末尾排序,而非空结果将按升序排序?

根据 nickf 引用的问题的答案,答案是:

select x from MyClass x order by case when x.MyProperty is null then 1 else 0 end, x.MyProperty
4

2 回答 2

0

我不知道这是否有帮助,但是还有另一个问题询问有关如何使用 MySQL 执行此操作的相同问题

也许相同的逻辑可以应用于 HQL?


编辑:这被接受了,所以显然,是的。

这是该问题的公认答案(Bill Karwin):

SELECT * FROM myTable
WHERE ...
ORDER BY CASE WHEN myDate IS NULL THEN 1 ELSE 0 END, myDate;
于 2008-10-05T10:13:46.840 回答
0

有一次,我只是放弃并修复了我的收藏类中的排序顺序。

因为我只是在移动 NULL,所以我所要做的就是在集合的开头剥离 null 并将它们附加到末尾。

有了切刀编码的赌注,它甚至可以在数组上完成。

尽管如此,ORDER BY CASE 是一个利落且易读的技巧。

于 2008-10-18T16:27:17.483 回答