Para escapar caracteres especiais em uma expressão LIKE, você prefixa-os com um caractere de escape. Você pode escolher qual caractere de escape usar com a palavra-chave ESCAPE. (Referência MSDN)
Por exemplo, isso escapa do símbolo %, usando \ como caractere de escape:
select * from table where myfield like '%15\% off%' ESCAPE '\'
Se você não sabe quais caracteres estarão em sua string e não deseja tratá-los como curingas, você pode prefixar todos os caracteres curinga com um caractere de escape, por exemplo:
set @myString = replace(
replace(
replace(
replace( @myString
, '\', '\\' )
, '%', '\%' )
, '_', '\_' )
, '[', '\[' )
(Observe que você também precisa escapar do seu caractere de escape e certifique-se de que seja o
replace
interno para que você não escape dos adicionados do outro replace
declarações). Então você pode usar algo assim:select * from table where myfield like '%' + @myString + '%' ESCAPE '\'
Lembre-se também de alocar mais espaço para sua variável @myString, pois ela ficará mais longa com a substituição da string.