SQL Server maskiert einen Unterstrich
-
08-06-2019 - |
Frage
Wie entkomme ich dem Unterstrich?
Ich schreibe so etwas wie die folgende where-Klausel und möchte in der Lage sein, tatsächliche Einträge mit _d am Ende zu finden.
Where Username Like '%_d'
Lösung
T-SQL-Referenz für LIKE für SQL Server 2000:
Sie können die Platzhaltermuster-Übereinstimmungszeichen als Literalzeichen verwenden.Um ein Platzhalterzeichen als Literalzeichen zu verwenden, schließen Sie das Platzhalterzeichen in Klammern ein.Die Tabelle zeigt mehrere Beispiele für die Verwendung des Schlüsselworts LIKE und der Platzhalterzeichen [ ].
Für Ihren Fall:
... LIKE '%[_]d'
Andere Tipps
Offensichtlich ist die Lösung von @Lasse richtig, aber es gibt noch eine andere Möglichkeit, Ihr Problem zu lösen:T-SQL-Operator LIKE
definiert das Optionale FLUCHT -Klausel, mit der Sie ein Zeichen deklarieren können, das dem nächsten Zeichen im Muster entkommt.
Für Ihren Fall sind die folgenden WHERE-Klauseln gleichwertig:
WHERE username LIKE '%[_]d'; -- @Lasse solution
WHERE username LIKE '%$_d' ESCAPE '$';
WHERE username LIKE '%^_d' ESCAPE '^';
Diese Lösungen sind absolut sinnvoll.Leider hat bei mir beides nicht wie erwartet funktioniert.Anstatt zu versuchen, mich damit herumzuschlagen, habe ich eine Lösung gefunden:
select * from information_schema.columns
where replace(table_name,'_','!') not like '%!%'
order by table_name
Das hat bei mir funktioniert, benutze einfach die Escape-Funktion'%\_%'