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'
War es hilfreich?

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'%\_%'

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top