regexp_like为oracle10过后出来的一个新函数,是为了做正则表达式的匹配,但是hsql确不支持该sql,后来查了一下大概原因,是方言中间没有将该函数注册进去,所以不能对应的将hsql转换为sql,解决办法:
[java]
public class TestOracle10gDialect extends Oracle10gDialect {
public TestOracle10gDialect() {
super();
/**
* 对于regexp_like,并不知道其是什么类型,应该为boolean类型,但是oracle对外提供的类型并没有boolean类型,
* 所以为了使其能够正常运作,将结果用1(true)、0(false)来表示
*/
registerFunction("regexp_like", new SQLFunctionTemplate(
Hibernate.BOOLEAN,
"(case when (regexp_like( 1, 2)) then 1 else 0 end)"));
}
}
其实很多人都遇到过类似的问题,而答案都是改用like,其实like虽然好用,但是其查找功能肯定比不上regexp_like灵活。