两列之间带有 Like 的 CriteriaBuilder 查询

Posted

技术标签:

【中文标题】两列之间带有 Like 的 CriteriaBuilder 查询【英文标题】:CriteriaBuilder query with Like between two columns 【发布时间】:2018-07-30 20:58:44 【问题描述】:

我正在尝试使用 CriteriaBuilder 创建一个查询,我需要使用 like 比较两列。

仅显示代码的相关部分

查询是这样构建的:builder.like(column1, column2); 其中column1column2 都是Expression 类型。

我的问题是我找不到将通配符添加到查询中的方法。这是生成的查询:

where saldodocum.NU_DOCUMENTO_ORIGINAL like substring(saldodocum.NU_DOCUMENTO, 5, 3)

而我需要的是:

where saldodocum.NU_DOCUMENTO_ORIGINAL like '%' + substring(saldodocum.NU_DOCUMENTO, 5, 3) + '%'

有没有办法使用 CriteriaBuilder 来实现这一点?我无法将% 添加到column2,因为我使用的是列名而不是设置值。

【问题讨论】:

你能展示你传递给 column2 的内容吗? 【参考方案1】:

builder.like(column1, builder.concat("%",builder.concat(column2,"%"));

【讨论】:

谢谢,就这样。我忽略了 concat 函数,认为它做了其他事情,应该更仔细地看!

以上是关于两列之间带有 Like 的 CriteriaBuilder 查询的主要内容,如果未能解决你的问题,请参考以下文章

考虑到两列,如何做一个 LIKE?

LIKE 运算符两列 clickhouse

ORACLE:如何使用 regexp_like 查找两个字符之间带有单引号的字符串?

MySQL 中的百分比 - 在同一个表中的两列之间

使用顺风 css 的两列之间的响应式分隔器

使用LIKE子句正确格式化sql查询