使用 Panache 选择字符串包含子字符串的位置

Posted

技术标签:

【中文标题】使用 Panache 选择字符串包含子字符串的位置【英文标题】:Select where string contains substring using Panache 【发布时间】:2021-01-30 17:56:32 【问题描述】:

我目前正在尝试使用 Ms SQL-Server 和 Panache-Repositories 实现“加载所有 X,其中 X.name 包含 y”的功能。 我知道 SQL 查询 "SELECT * FROM X WHERE X.name LIKE '%0y%'" 有效,但我无法使用 Panache-Query 让它工作。 我试过了

@ApplicationScoped
public class XRepository implements PanacheRepository<X> 

  public List<X> listWhereLike(String like) 
    return list("name like ?1", "%" + like + "%");
  

  public List<X> listWhereLike(String like) 
    return list("name like %?1%", like);
  

  public List<X> listWhereLike(String like) 
    return list("contains(name, ?1)", like);
  

但它们都不起作用。 它们要么因为意外字符“%”或“(”而引发异常,要么只是返回一个空列表。

我错过了什么?

【问题讨论】:

【参考方案1】:

这就是解决方案,您只需将模式放入字符串中,然后再将其添加到查询中即可;

  public List<X> listWhereLike(String like) 

    String searchInput = "%" + like + "%";

    return list("name like ?1", searchInput );
  

【讨论】:

以上是关于使用 Panache 选择字符串包含子字符串的位置的主要内容,如果未能解决你的问题,请参考以下文章

C#:XPath 选择具有包含子字符串的属性的节点?

Pandas:从列表中选择包含任何子字符串的行

SQL在文本字段中选择包含子字符串的行

CODEVS1204寻找子串位置

shell怎么查找子字符串出现的位置

如何选择包含特定子字符串的单词列表作为 SQL 查询(oracle)的一部分?