Um Sonderzeichen in einem LIKE-Ausdruck zu maskieren, stellen Sie ihnen ein Escape-Zeichen voran. Sie können wählen, welches Escape-Zeichen Sie mit dem Schlüsselwort ESCAPE verwenden möchten. (MSDN-Ref)
Dies maskiert beispielsweise das %-Symbol, wobei \ als Escape-Zeichen verwendet wird:
select * from table where myfield like '%15\% off%' ESCAPE '\'
Wenn Sie nicht wissen, welche Zeichen in Ihrer Zeichenfolge enthalten sein werden, und Sie sie nicht als Platzhalter behandeln möchten, können Sie allen Platzhalterzeichen ein Escape-Zeichen voranstellen, z. B.:
set @myString = replace(
replace(
replace(
replace( @myString
, '\', '\\' )
, '%', '\%' )
, '_', '\_' )
, '[', '\[' )
(Beachten Sie, dass Sie auch Ihr Escape-Zeichen maskieren müssen, und stellen Sie sicher, dass dies das innere replace
ist damit Sie die von den anderen replace
hinzugefügten nicht entkommen Aussagen). Dann können Sie so etwas verwenden:
select * from table where myfield like '%' + @myString + '%' ESCAPE '\'
Denken Sie auch daran, Ihrer @myString-Variablen mehr Platz zuzuweisen, da sie durch die String-Ersetzung länger wird.