Cmis contains does not support wild cards using %. The CONTAINS syntax only supports terms and phrases and the exact behaviour as to what is a term is repository specific.
So your query to match 50% is tokenised to 50 sand matches all docs containing 50 as you say.
Unless you are looking specifically in cmis:name (and not the content) there is not much else you can do other then configure the tokenisation behaviour of d:content to keep %.