根据下表,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
执行此操作?
答案 0 :(得分:2)
在Oracle / PostgresQL中,您可以使用:
select * from table where 'foobar' like wildcard || '%'
我不确定||
字符串连接是否是Ansi SQL标准(我认为不是),因此在其他数据库中,您需要将其替换为该数据库的连接函数或运算符。