给定下表,其中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/