【问题标题】:jpa criteria compare two strings in without considering spacesjpa标准比较两个字符串而不考虑空格
【发布时间】:2017-02-17 00:51:18
【问题描述】:

我认为这是一个基本问题,但我很难得到答案。

问题是:使用CriteriaBuilder 和 Predicate 如何在不考虑中间空格的情况下比较字符串。例如:"CH 525 kV AREIA 1077 PR"CriteriaBuilder 库中没有“替换”功能。

cb.like(equipamento.get(EquipamentoBO_.txNomeLongo), "%" + dto.getTxNomeEquipamento().toUpperCase().replace(" ", "") + "%")

谢谢

【问题讨论】:

    标签: java jpa compare criteria


    【解决方案1】:

    如果您使用 REPLACE 作为要使用的函数,那么有一个 function 方法应该可以解决问题:

    cb.like(
              cb.function("REPLACE"
                     , String.class
                     , equipamento.get(EquipamentoBO_.txNomeLongo)
                     , cb.literal(" ")
                     , cb.literal(""))
              , "%" + dto.getTxNomeEquipamento().toUpperCase().replace(" ", "") + "%"
           )
    

    【讨论】:

    • 最终代码为:cb.like( cb.upper(cb.function("REPLACE" , String.class ,equipamento.get(EquipamentoBO_.txNomeLongo) , cb.literal(" ") , cb.literal(""))) , "%" + dto.getTxNomeEquipamento().toUpperCase().replace(" ", "") + "%" )
    • 太棒了。很高兴我能帮忙
    猜你喜欢
    • 2021-08-15
    • 2012-07-10
    • 2014-01-10
    • 2019-09-30
    • 2016-12-25
    • 1970-01-01
    • 1970-01-01
    • 2021-02-10
    • 1970-01-01
    相关资源
    最近更新 更多