将输入字段与通配符列匹配

时间:2014-07-23 03:21:13

标签: 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执行此操作?

1 个答案:

答案 0 :(得分:2)

在Oracle / PostgresQL中,您可以使用:

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

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