Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Sonderzeichen in einer SQL LIKE-Anweisung mithilfe von SQL-Parametern maskieren

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