Om speciale tekens in een LIKE-uitdrukking te laten ontsnappen, plaatst u ze als voorvoegsel met een escape-teken. Je mag kiezen welke escape-teken je wilt gebruiken met het ESCAPE-sleutelwoord. (MSDN-referentie)
Dit ontsnapt bijvoorbeeld aan het %-symbool, waarbij \ als escape-teken wordt gebruikt:
select * from table where myfield like '%15\% off%' ESCAPE '\'
Als u niet weet welke tekens in uw tekenreeks zullen staan en u ze niet als jokertekens wilt behandelen, kunt u alle jokertekens vooraf laten gaan door een escape-teken, bijvoorbeeld:
set @myString = replace(
replace(
replace(
replace( @myString
, '\', '\\' )
, '%', '\%' )
, '_', '\_' )
, '[', '\[' )
(Merk op dat u ook aan uw escape-teken moet ontsnappen en ervoor moet zorgen dat dit de binnenste replace
is zodat u niet ontsnapt aan de toegevoegde van de andere replace
verklaringen). Dan kun je zoiets als dit gebruiken:
select * from table where myfield like '%' + @myString + '%' ESCAPE '\'
Denk er ook aan om meer ruimte toe te wijzen aan uw @myString-variabele, aangezien deze langer zal worden bij het vervangen van de tekenreeks.