Per eseguire l'escape di caratteri speciali in un'espressione LIKE, anteponi loro un carattere di escape. Puoi scegliere quale carattere di escape utilizzare con la parola chiave ESCAPE. (Rif. MSDN)
Ad esempio, questo esegue l'escape del simbolo %, utilizzando \ come carattere di escape:
select * from table where myfield like '%15\% off%' ESCAPE '\'
Se non sai quali caratteri ci saranno nella tua stringa e non vuoi trattarli come caratteri jolly, puoi anteporre a tutti i caratteri jolly un carattere di escape, ad esempio:
set @myString = replace(
replace(
replace(
replace( @myString
, '\', '\\' )
, '%', '\%' )
, '_', '\_' )
, '[', '\[' )
(Nota che devi anche sfuggire al tuo carattere di escape e assicurati che sia il replace
interno in modo da non sfuggire a quelli aggiunti dall'altro replace
dichiarazioni). Quindi puoi usare qualcosa del genere:
select * from table where myfield like '%' + @myString + '%' ESCAPE '\'
Ricorda inoltre di allocare più spazio per la tua variabile @myString poiché diventerà più lunga con la sostituzione della stringa.