Search code examples
hibernatehqlwildcard

How to escape wildcard characters in "like" clause?


How can I escape the wildcard characters in a like clause?

E.g.:

select foo from Foo as foo where foo.bar like '%' || :filter ||'%'
query.setParameter("filter", "%");
query.list(); 
// I'd expect to get the foo's containing the '%' in bar, not all of them!

Any ideas?


Solution

  • In Hibernate 3 you can use the escape parameter to specify the escape char:

    select foo from Foo as foo where foo.bar like '!%' escape '!'
    

    I think that should work, although I have never tried it in practice.