views:

330

answers:

1

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?

+2  A: 

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.

Dean Povey
This is the correct answer, but you missed the single quotes between the escape character: escape '!'
Luiz Penkal
@Luiz, thanks, I have corrected my answer.
Dean Povey