Generally so:
select * from price where lower(vstavki) regexp '(^|[^a-zа-яр-я])(топаз|бриллиант)([^a-zа-я]|$)';
BUT, pay attention, I had to include in the first square brackets, excluding any letters before the words, besides the full range а-я included the р-я without it, he constantly found “rauchtopaz” because he considered the letter “x” not in the range а-я , but at the same time perfectly understood that it is in the р-я range (I selected the range experimentally). What it can be connected with, I do not know. But since he had one glitch with Russian letters, maybe something else. Those. I will not give a 100% guarantee that it will work with arbitrary words.
In any case, I applied lower lowering strings to small letters, so the search words in a regular expression should also be small letters, as an option, lower can also be used for them.
In addition, you may need to adjust the ranges of the letters of exceptions under your understanding of what should fall under the concept of a merged word and what is not.
In general, this is a reason to think about the structure of the base, even if filling out this field does not allow there to write anything, but to request each material separately and form the line itself with the correct delimiters. Although, if it’s very good, there should be a reference book of permissible materials for the inserts and a price record with individual records lying inserts to the given price line.
And yet, perhaps, you need to look towards sphinx full-text search, or at least built into MySQL
%invstavki LIKE "%Топаз%"- Bald