java - 将输入字段与一列通配符匹配

标签 java sql hibernate

给定下表,其中wildcard是一个字符串:

ID   wildcard
1     foo
2     fo
3     f

我希望能够构建一个 Hibernate Criterion用于匹配匹配任何 wildcard 的输入字段的字段。

下面的例子应该阐明我所说的“匹配”的意思:

使用“foobar”查询应该匹配所有这 3 行,因为:

foo% , fo% , 和 f%全部包括foobar

换句话说,我希望查询返回输入值以行的 wildcard 开头的位置专栏。

我这样做的一种方法是设置一个 or条件项,我检查是否 wildcard等于 foobar 的每一部分.

例子:

select * from table where wildcard = 'f' or wildcard = 'fo' or 
      wildcard = 'foo' or wildcard = 'foob' or 
          wildcard = 'fooba' or wildcard = 'foobar'

但我确定我可以做得更好?

我如何使用 Hibernate 执行此操作 Criterion

最佳答案

在 Oracle/PostgresQL 中你可以使用:

select * from table where 'foobar' like wildcard || '%'

我不确定 || 字符串连接是否符合 Ansi SQL 标准(我认为不是),因此在其他数据库中,您需要将其替换为该数据库的连接函数或运算符。

关于java - 将输入字段与一列通配符匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24901300/

相关文章:

java - 接受多个字段的 Solr 查询返回列表中的第一个非空值,如 oracle 中的合并

java - 如何将 Java 转换为 Kotlin

mysql - 计算 SQL 中的多个 CASE 出现次数

mysql - 在单个查询中从 2 个表中选择

java - 如何在 JPA 2 中创建映射为实体类的 3 或 4 路多对多关联

java - 在 Java 3D 中从 Point3f 数组绘制洛伦兹吸引子

java - 日期差异(以天为单位)向不同日期返回相同的值

mysql - 限制数据库级别的关联记录数

java - hibernate 搜索错误

java - 获取 'Exception in thread "main"java.lang.IllegalArgumentException : Unknown entity: <entityClass>'