【问题标题】:HQL sort by name ignoring optional 'The ' prefixHQL 按名称排序,忽略可选的“The”前缀
【发布时间】:2016-01-25 14:24:03
【问题描述】:

所以我有一个命名查询,它搜索记录并按名为 fullName 的列对结果进行排序。其中一些全名以“The”为前缀 - 我想修改查询以忽略这些特定的前缀。下面是当前命名查询的简化版本,其中包含一个精简的条件列表:

select r from Record r where r.available = true ORDER BY r.fullName asc

【问题讨论】:

    标签: hibernate substring hql named-query


    【解决方案1】:

    试试这个:

    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() 出现了一点错误,但无论如何都会将子字符串的结尾参数匹配到结尾。正确位置的小写字母使类似的大小写不敏感。 select r from Record r where r.available = true ORDER BY CASE WHEN LOWER(r.fullName) LIKE "the%" THEN SUBSTRING(r.fullName, 5) ELSE r.fullName END asc
    • @Snow:好的,我已经按照你的建议删除了 substring 的第三个参数 ;)
    猜你喜欢
    • 2011-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多