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 ']'
.