470 Stimmen

SQL Server Unterstriche entfernen

Wie entferne ich das Unterstrichzeichen?

Ich schreibe etwas wie die folgende Where-Klausel und möchte in der Lage sein, aktuelle Einträge mit _d am Ende zu finden.

Where Username Like '%_d'

736voto

Lasse V. Karlsen Punkte 364542

T-SQL Referenz für LIKE :

Sie können die Platzhalterzeichen für den Mustervergleich als Literalzeichen verwenden. Um ein Platzhalterzeichen als Literalzeichen zu verwenden, schließen Sie das Platzhalterzeichen in Klammern ein. Die folgende Tabelle zeigt mehrere Beispiele für die Verwendung des Schlüsselworts LIKE und der Platzhalterzeichen [ ].

Für Ihren Fall:

... LIKE '%[_]d'

267voto

Gerardo Lima Punkte 5995

Natürlich 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 die optionale ESCAPE Klausel, mit der Sie ein Zeichen deklarieren können, das das nächste Zeichen in das Muster entweichen lässt.

In Ihrem Fall sind die folgenden WHERE-Klauseln gleichwertig:

WHERE username LIKE '%[_]d';            -- @Lasse solution
WHERE username LIKE '%$_d' ESCAPE '$';
WHERE username LIKE '%^_d' ESCAPE '^';

72 Stimmen

Um das Bild zu vervollständigen: die ESCAPE Klausel ist Teil des SQL-Standards und funktioniert mit jedem DBMS, nicht nur mit SQL Server.

9voto

Alex C. Punkte 87

Hinzufügen von [ ] hat die Arbeit für mich erledigt

like '%[\\_]%'

8voto

Tek Mailer Punkte 61

Diese Lösungen sind absolut sinnvoll. Leider hat bei mir keine der beiden Lösungen wie erwartet funktioniert. Anstatt zu versuchen, sich damit herumzuschlagen, habe ich eine Lösung gefunden:

select *
from information_schema.columns 
where replace(table_name,'_','!') not like '%!%'
order by table_name

8voto

Freddy Madsen Punkte 81

Ich hatte ein ähnliches Problem mit einem ähnlichen Muster '%_%' hat nicht funktioniert - wie die Frage andeutet :-)

Verwendung von '%\_%' hat auch nicht funktioniert, da diese erste \ wird "vor Gleichem" interpretiert.

Verwendung von '%\\_%' funktioniert. Die \\ (doppelter Backslash) wird zunächst in einen einfachen umgewandelt \ (Backslash) und dann nach dem gleichen Muster verwendet.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X