Startseite » wie man » Suchen Sie nach Zeilen mit Sonderzeichen in SQL Server

    Suchen Sie nach Zeilen mit Sonderzeichen in SQL Server

    Bei der Behebung eines Programmierproblems ist mir heute aufgefallen, dass Sie eine LIKE-Suche nach String-Spalten, die Sonderzeichen wie% oder _ enthalten, nicht ohne eine spezielle Syntax verwenden können. Das Problem herauszufinden dauerte nur wenige Minuten, aber das Erinnern an die Syntax ist immer einfacher, wenn Sie darüber schreiben.

    Also ja, dieser Beitrag ist nur für mich. Hoffentlich hilft es auch jemand anderem.

    Nehmen wir an, Sie möchten alle Felder finden, die den Text "100%" enthalten, so dass Sie diese Abfrage zusammenstellen:

    SELECT * FROM Tabellenname WO Feldname LIKE '% 100 %%'

    Statt dem, was Sie wollten, erhalten Sie alle Zeilen, die "100" enthalten, sowie die Zeilen, die "100%" enthalten..

    Das Problem hierbei ist, dass SQL Server das Prozentzeichen, den Unterstrich und die eckigen Klammern als Sonderzeichen verwendet. Sie können sie einfach nicht als einfaches Zeichen in einer LIKE-Abfrage verwenden, ohne sie zu umgehen.

    Eckige Klammer Flucht

    Sie können% oder _ mit eckigen Klammern umgeben, um SQL Server mitzuteilen, dass das Zeichen in diesem Zeichen ein reguläres Zeichen ist.

    SELECT * FROM Tabellenname WO Feldname LIKE '% 100 [%]%'

    T-SQL ESCAPE-Syntax

    Alternativ können Sie den ESCAPE-Operator an Ihre Abfrage anhängen und vor dem Wert, den Sie abfangen möchten, ein \ -Zeichen einfügen.

    SELECT * FROM Tabellenname WO Feldname LIKE '% 100 \ %%' ESCAPE '\'

    Der ESCAPE '\' - Teil der Abfrage gibt der SQL-Engine an, das Zeichen nach dem \ als Literalzeichen und nicht als Platzhalterzeichen zu interpretieren.

    Ich persönlich finde die zweite Methode einfacher zu handhaben, und Sie können sie auch verwenden, um einer eckigen Klammer zu entgehen.