For at undslippe specialtegn i et LIKE-udtryk, skal du foranstille dem med et escape-tegn. Du kan vælge, hvilken escape char du vil bruge med ESCAPE søgeordet. (MSDN Ref)
For eksempel undgår dette %-symbolet ved at bruge \ som escape-tegn:
select * from table where myfield like '%15\% off%' ESCAPE '\'
Hvis du ikke ved, hvilke tegn der vil være i din streng, og du ikke ønsker at behandle dem som jokertegn, kan du præfikse alle jokertegn med et escape-tegn, f.eks.:
set @myString = replace(
replace(
replace(
replace( @myString
, '\', '\\' )
, '%', '\%' )
, '_', '\_' )
, '[', '\[' )
(Bemærk, at du også skal undslippe dit escape-tegn, og sørg for, at det er den indre replace
så du ikke undslipper dem, der er tilføjet fra den anden replace
udsagn). Så kan du bruge noget som dette:
select * from table where myfield like '%' + @myString + '%' ESCAPE '\'
Husk også at allokere mere plads til din @myString-variabel, da den bliver længere med strengerstatningen.