There are a couple of ways you might try. Remember that the '%' is used for multiple character wildcards. You can also use a single character search, I believe its the '?' but I would have to look it up. The search that you are using should work, but if your fields are long, then you will have problems. There is no wildcard that will do UP TO (say) 5 characters, but not more. If you want more than one character, you statement building it from scratch would grow exponentially, and I think it would cause you other problems.
It does look like you are searching for key words, or full text indexing. Are either of these the case?
There are some other ways of thinking about how to do things. If you want to give me some more info, I will try to help out.
I hope this was useful.