Sie haben zwei Möglichkeiten:
-
schließen Sie sie in
[ein und]. Also:where pattern like '[%]'Sucht nach dem Prozentzeichen. Vollständige Liste der zu maskierenden Zeichen -
'_', '%', '[', ']'mit entsprechenden Ersetzungen'[_]', '[%]', '[[]', '[]]'. Beispielcode finden Sie unter Escapezeichen für das Escape-Zeichen funktionieren nicht – SQL-LIKE-Operator -
Verwenden Sie ein Escape-Zeichen, das wahrscheinlich nicht in der Zeichenfolge enthalten ist, z. B. ein Backtick:
where pattern like '`%' escape '`'(Siehe die Syntax auf MSDN - LIKE (Transact-SQL) .)
In beiden Fällen würde ich vorschlagen, dass Sie die Ersetzung in der Anwendungsschicht vornehmen, aber Sie können es auch in SQL tun, wenn Sie wirklich wollen:
where pattern like replace(@pattern, '%', '[%]')
Und dem Endbenutzer Zugriff auf Wildcards zu gewähren, kann im Hinblick auf die Benutzeroberfläche eine gute Sache sein.
Hinweis:Es gibt noch ein paar Sonderzeichen '-' und '^' in der LIKE-Abfrage, aber sie müssen nicht maskiert werden, wenn Sie bereits '[' maskieren und ']' .