För att undvika specialtecken i ett LIKE-uttryck, sätter du prefixet för dem med ett escape-tecken. Du får välja vilken escape char du vill använda med nyckelordet ESCAPE. (MSDN Ref)
Detta undviker till exempel %-symbolen, med \ som escape-tecken:
select * from table where myfield like '%15\% off%' ESCAPE '\'
Om du inte vet vilka tecken som kommer att finnas i din sträng, och du inte vill behandla dem som jokertecken, kan du prefixa alla jokertecken med ett escape-tecken, t.ex.:
set @myString = replace(
replace(
replace(
replace( @myString
, '\', '\\' )
, '%', '\%' )
, '_', '\_' )
, '[', '\[' )
(Observera att du måste undkomma din escape char också, och se till att det är den inre replace
så att du inte undkommer de som lagts till från den andra replace
uttalanden). Då kan du använda något i stil med detta:
select * from table where myfield like '%' + @myString + '%' ESCAPE '\'
Kom också ihåg att allokera mer utrymme för din @myString-variabel eftersom den blir längre när strängen ersätts.