webentwicklung-frage-antwort-db.com.de

Zeichen, die in SQL maskiert werden müssen

Ich war auf der Suche nach einer Liste von Sonderzeichen, die in ms sql server mit Escapezeichen versehen werden müssen, aber ich konnte keine der meisten Antworten finden, die ich für die ähnlichen Fragen sah, die zur Verwendung von parametrisierten Abfragen geraten sind entgeht mir nicht. 

Also dachte ich, ich werde ein paar von denen ausprobieren und sehen, welche versagt ... und ich habe eine einfache Abfrage versucht 

select * from x where value = '<characters>'

bei einer solchen Abfrage habe ich fast alle Zeichen ausprobiert, die ich auf meiner Tastatur finden konnte, und alle scheinen zu funktionieren ... abgesehen von dem Singe-Zitat .. das versagt.

Daher möchte ich die Liste der Zeichen, die ungültig sind und in ms sql server - tsql escapen müssen, kennen. Ich möchte nicht das Risiko eingehen, nur das einfache Anführungszeichen zu umgehen und den Rest zu belassen, der Probleme verursachen könnte 

Schätze deine Hilfe

18
Hell Boy

Das einzige Zeichen, das in einer Zeichenfolge maskiert werden muss, ist ein einfaches Anführungszeichen (das aus zwei einfachen Anführungszeichen besteht). Andernfalls ist es eine Zeichenfolge, und t-sql wird nicht weiter damit beschäftigt sein.

Wenn Sie eine LIKE-Anweisung verwenden, finden Sie weitere Informationen in diesem SO - Thema Escape eine Zeichenfolge in SQL Server, sodass die Verwendung in LIKE-Ausdrücken sicher ist

Abgesehen davon ist jedes Framework, das mich nicht dazu bringt, Parameter zu verwenden, das meinen Sachen nicht richtig entgeht, ein harter Stopp. Der Versuch, die Eingabe von Strings manuell zu bereinigen, ist wie die Verwendung der Pull-Out-Methode. Irgendwann wird es dich kriegen.

33
HackedByChinese

Nicht sicher, ob das genau ist.

% und . und andere Platzhalterzeichen müssen abhängig von der Abfrage möglicherweise umgangen werden . Dort müssen Sie nach einem Punkt suchen. Das wird fehlschlagen

select * from xxxx where field like '%.%'   
1
Sven Hansen

Ich wollte nur sagen, dass _ (Unterstrich) auch entkommen werden muss. 

wählen Sie * aus Produkten, in denen SomeColumn wie 'FD [_]%'

Übrigens, bei parametrisierten Abfragen ist nichts falsch, aber manchmal möchten Sie zur SQL-Verwaltungskonsole gehen und schnell eine Abfrage ausführen, um etwas herauszufinden.

0
DotnetCoder