给定下表,其中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'
但是我确定我可以做得更好?
我该如何使用休眠
Criterion
? 最佳答案
在Oracle / PostgresQL中,您可以使用:
select * from table where 'foobar' like wildcard || '%'
我不确定
||
字符串连接是否为Ansi SQL标准(我认为不是),因此在其他数据库中,您需要将其替换为该数据库的连接函数或运算符。