Hibernate HQL按名称排序忽略可选的“The”前缀
因此,我有一个命名查询,它搜索记录并按名为fullName的列对结果进行排序。其中一些全名的前缀是“The”-我想修改查询以忽略这些特定前缀。下面是当前命名查询的简化版本,其中包含条件的简化列表:Hibernate HQL按名称排序忽略可选的“The”前缀,hibernate,substring,hql,named-query,Hibernate,Substring,Hql,Named Query,因此,我有一个命名查询,它搜索记录并按名为fullName的列对结果进行排序。其中一些全名的前缀是“The”-我想修改查询以忽略这些特定前缀。下面是当前命名查询的简化版本,其中包含条件的简化列表: select r from Record r where r.available = true ORDER BY r.fullName asc 试试这个: select r from Record r where r.available = true ORDER BY CASE
select r from Record r where r.available = true ORDER BY r.fullName asc
试试这个:
select r
from Record r
where r.available = true
ORDER BY
CASE
WHEN r.fullName LIKE "The%" THEN SUBSTRING(r.fullName, 5)
ELSE r.fullName
END asc
试试这个:
select r
from Record r
where r.available = true
ORDER BY
CASE
WHEN r.fullName LIKE "The%" THEN SUBSTRING(r.fullName, 5)
ELSE r.fullName
END asc
这正是我所需要的。从.length中得到一个小错误,但是取消子字符串的end参数仍然与end匹配。正确位置的小写字母使like不区分大小写。从记录r中选择r,其中r.available=true,当LOWERr.fullName与%s类似时,按大小写排序,然后选择SUBSTRINGr.fullName,5否则r.fullName结束asc@Snow:好的,我已经按照你的建议删除了substring的第三个参数;这正是我所需要的。从.length中得到一个小错误,但是取消子字符串的end参数仍然与end匹配。正确位置的小写字母使like不区分大小写。从记录r中选择r,其中r.available=true,当LOWERr.fullName与%s类似时,按大小写排序,然后选择SUBSTRINGr.fullName,5否则r.fullName结束asc@Snow:好的,我已经按照你的建议删除了substring的第三个参数;