Pour échapper les caractères spéciaux dans une expression LIKE, vous les préfixez avec un caractère d'échappement. Vous pouvez choisir le caractère d'échappement à utiliser avec le mot-clé ESCAPE. (Réf MSDN)
Par exemple, ceci échappe le symbole %, en utilisant \ comme caractère d'échappement :
select * from table where myfield like '%15\% off%' ESCAPE '\'
Si vous ne savez pas quels caractères seront dans votre chaîne et que vous ne voulez pas les traiter comme des caractères génériques, vous pouvez préfixer tous les caractères génériques avec un caractère d'échappement, par exemple :
set @myString = replace(
replace(
replace(
replace( @myString
, '\', '\\' )
, '%', '\%' )
, '_', '\_' )
, '[', '\[' )
(Notez que vous devez également échapper votre caractère d'échappement et assurez-vous qu'il s'agit du replace
interne pour ne pas échapper à ceux ajoutés par l'autre replace
déclarations). Ensuite, vous pouvez utiliser quelque chose comme ceci :
select * from table where myfield like '%' + @myString + '%' ESCAPE '\'
N'oubliez pas également d'allouer plus d'espace pour votre variable @myString car elle deviendra plus longue avec le remplacement de la chaîne.