За да избягвате специални символи в израз LIKE, вие ги поставяте префикс с escape-символ. Можете да изберете кой escape char да използвате с ключовата дума ESCAPE. (MSDN Ref)
Например това избягва символа %, като се използва \ като escape char:
select * from table where myfield like '%15\% off%' ESCAPE '\'
Ако не знаете какви знаци ще бъдат във вашия низ и не искате да ги третирате като заместващи знаци, можете да поставите префикс към всички заместващи знаци с escape char, напр.:
set @myString = replace(
replace(
replace(
replace( @myString
, '\', '\\' )
, '%', '\%' )
, '_', '\_' )
, '[', '\[' )
(Обърнете внимание, че трябва да екранирате и своя escape char и се уверете, че това е вътрешният replace
така че да не избягате от добавените от другия replace
изявления). След това можете да използвате нещо подобно:
select * from table where myfield like '%' + @myString + '%' ESCAPE '\'
Също така не забравяйте да отделите повече място за вашата променлива @myString, тъй като тя ще стане по-дълга със замяната на низа.