当前位置: 首页 > 知识库问答 >
问题:

使用“%”标准像sql一样搜索本机sql

公孙威
2023-03-14

我有一个连接PL/SQL搜索的代码,就像使用“%”一样,我使用标准来实现

String sql = "SELECT * FROM EMPLOYEE ";
Query query = entityManager.createNativeQuery(sql.toString());

if(searchCharacterInfo.getKeyword() != null){
      sql += " WHERE NAME LIKE %:keyword% ";
      query = entityManager.createNativeQuery(sql).setParameter("keyword", keyword);
}

List<Object> res =  query.getResultList();
return res;

当我运行此代码以显示错误时:

Could not locate named parameter keyword

请帮我解决这个问题!

共有2个答案

叶稳
2023-03-14

假设您有一个模型类员工。因此,您可以编写如下标准:

        CriteriaBuilder cb = entityManager.getCriteriaBuilder();
        CriteriaQuery<EMPLOYEE> cq = cb.createQuery(EMPLOYEE.class);
        Root<EMPLOYEE> employee = cq.from(EMPLOYEE.class);
        cq.select(employee);
        List<Predicate> predicates = new ArrayList<>();
        if (searchCharacterInfo.getKeyword() != null) {
            predicates.add(cb.like(employee.get("name"), "%" + searchCharacterInfo.getKeyword() + "%"));
        }
    
        cq.where(predicates.toArray(new Predicate[0]));
        List<EMPLOYEE> res =  entityManager.createQuery(cq).getResultList();
尉迟浩思
2023-03-14

参数占位符不会被占位符值盲目替换,因此%:keyword%不是合法语法。

您需要在SQL中有like: keyword,并从Java侧将关键字传递为"%"关键字"%"

或者,您可以在SQL端连接字符串:<code>类似(“%”||:关键字| 124;“%)。

 类似资料:
  • 我们正在用搜索词字符串构建bool查询来搜索Lucene索引。我希望使用标准分析器分析这些字符串,我们使用的分析器用于索引。例如,应该分解为,,,因为Lucene文档声明连字符会导致数字保持在一起,但单词会被标记化。最好的方法是什么? 目前,我正在通过QueryParser运行我的搜索项字符串。 这样做的问题是插入了引号。例如,变为,,不会返回任何内容,因为Lucene会将标记为和. 我绝对不想通

  • 问题内容: 我只是从ElasticSearch开始,然后尝试基于它来实现自动完成功能。 我有一个带有type 字段的索引。这是存储在该索引中的文档的示例: 分析配置如下所示: 映射: 我将以下查询发送到ES: 结果,我得到以下信息: 在大多数情况下,它是有效的。在用户必须实际键入整个单词之前,它确实找到了带有的文档(足够了)。 这就是我的问题。我也希望它返回。要获取,我需要发送以下查询: 注意那里

  • 我读过. net Core是跨平台的,这意味着使用. net Core的类库可以在windows、linux和mac中工作。 但我怀疑. net标准类库是否也可以在许多平台(许多操作系统或不)上运行,例如. net Core库或不同?或者. net标准是为了兼容UWP、android等平台? 因为当我阅读跨平台时,有时它是在不同操作系统(窗口,Linux,mac)之间的意思,有时它意味着在各种应用

  • 问题内容: 我有一个排序的数组,想要对它进行二进制搜索。 所以我想问一下Swift库中是否已有诸如sort等的东西?还是有类型独立版本可用? 当然,我可以自己编写它,但是我想避免再次发明轮子。 问题答案: 这是使用二进制搜索的通用方法:

  • 可以配置Vim将其用作IDE。在本节中,将讨论以下主题内容: 语法突出显示 智能缩进 跳转 执行shell命令 配置ctags和csope 自动完成和自动建议 1. 语法突出显示 语法突出显示是IDE的重要功能之一。要启用语法突出显示,请使用 - 例如,下图显示C代码的语法高亮显示 - 要禁用语法突出显示,请使用 - 禁用语法突出显示时,它将显示以下输出 - 2. 智能缩进 要执行自动和智能缩进,

  • 问题内容: 我有一个SQL Server2005数据库,其中的表包含4000万条记录。每个记录包含一列,该列存储用逗号分隔的关键字列表。每个关键字都是字母和数字的组合。关键字最长为7个字符,平均每条记录有15个关键字。关键字在各行之间不是唯一的。 我想搜索全部或部分关键字。 我创建了全文索引,其中显示了328,245,708个唯一键数。搜索效率对于4个或更多字符的查询(在测试机上大约 100毫秒