ORDER BY中的HQL情况未正确排序

马可·诺罗尼亚(Marco Noronha)

我有一个HQL,可以选择按“ studentNumber”或其名称进行订购。

    String orderBy = orderByNumber
            ? "(case when e.studentNumber is null then e.student.name else e.studentNumber end)" : "e.student.name";

但是,如果我选择studentNumber,并且它为null,则应该按名称排序。为此,我使用了:

   (case when e.studentNumber is null then e.student.name else e.studentNumber end)

这很好用,但是当我有10个以上的学生时,订单是这样的:

    1
    10
    11
    12
    2
    3
    4
    5
    6
    7
    8
    9

studentNumber在数据库和实体中设置为Integer。我想如果将其视为字符串,则会发生这种情况。

谢谢你

编辑1我尝试了这个新查询:

    (case when (case when e.studentNumber is null then e.student.name else e.studentNumber end) = e.studentNumber then cast(e.studentNumber as int) end)

现在它可以正确排序,但是当e.studentNumber为null时,不是按名称排序。如果我添加则尝试以下操作:

    (case when (case when e.studentNumber is null then e.student.name else e.studentNumber end) = e.studentNumber then cast(e.studentNumber as int)  else e.student.name end)

第一个问题是僵尸(1,10,2,3)从死里复活...

编辑2

我也尝试过合并:

   (case when coalesce(e.studentNumber, e.student.name) = e.studentNumber then cast(e.studentNumber as int) else e.student.name end)

在两种情况下均与上述相同。

达米安

我认为这是SQL错误。在“案例”中,您将返回两个不同的数据类型,sql将自动广播数字类型以满足某种逻辑。我尝试在oracle数据库中执行类似的操作,并导致一个错误,指出返回的数据类型不同。您应该尝试更改您的请求。如果studentNumber不为null,也许您可​​以尝试将结果转换为数字https://stackoverflow.com/a/2000061/3543153

编辑1:关于使用类似的东西的含义是什么

ORDER BY e.studentNumber NULLS LAST, e.student.name NULLS LAST

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

r中的Order()函数未正确排序

来自分类Dev

Django order_by()未正确排序

来自分类Dev

排序ORDER BY

来自分类Dev

MySQL Order通过不排序正确的数据

来自分类Dev

排序“ ORDER BY”查询的顺序

来自分类Dev

在MySQL中用Order By排序

来自分类Dev

Rcpp中的排序排列,即base :: order()

来自分类Dev

Linq Order通过100%的时间无法正确排序

来自分类Dev

SQLite Random()在ORDER BY中排序不正确

来自分类Dev

当未提供ORDER BY时,postgres如何排序结果

来自分类Dev

PagingAndSortingRepository中的Order By子句

来自分类Dev

不使用ORDER BY的SQL排序

来自分类Dev

使用ORDER BY的SQL高级排序

来自分类Dev

ORDER BY 多列排序冲突

来自分类Dev

功能未实现:WINDOW / ORDER BY

来自分类Dev

VBA中的冒泡排序未正确排序

来自分类Dev

Python中的冒泡排序未正确排序

来自分类Dev

HQL order by 子句不起作用

来自分类Dev

Order By排序与SSIS(集成服务)中的Sort Transformation不同

来自分类Dev

如何在SQL中不使用“ ORDER BY”对升序进行排序

来自分类Dev

在JQWidgets中按“ column_order”对网格列进行排序

来自分类Dev

结果中包含ORDER BY列时避免文件排序

来自分类Dev

MySQL中的特定ORDER BY子句

来自分类Dev

JpaSpecificationExecutor规范中的JOIN + ORDER BY

来自分类Dev

ORDER BY在MySQL中如何工作?

来自分类Dev

PIG中AVG()函数的ORDER BY

来自分类Dev

Cordova / Phonegap中的ORDER BY RANDOM()

来自分类Dev

Symfony中对象的Order属性

来自分类Dev

在GROUP BY的ORDER中的MySQL LIMIT