Ich möchte ein Zitat mit Escapezeichen verwenden. Wie kann ich?
Ich habe einen Fehler in SQL Server erhalten
Nicht geschlossene Anführungszeichen nach der Zeichenfolge.
Ich schreibe eine SQL-Abfrage in eine varchar
Variable, habe aber diesen Fehler erhalten:
Nicht geschlossene Anführungszeichen nach der Zeichenfolge.
Ich möchte ein Anführungszeichen als Escapezeichen verwenden.
sql-server
escaping
char
esquare
quelle
quelle
Antworten:
Um zu entkommen, müssen
'
Sie einfach vorher einen anderen setzen:''
Wie die zweite Antwort zeigt, ist es möglich, einem einfachen Anführungszeichen wie folgt zu entkommen:
Ergebnis wird sein
Wenn Sie SQL zu einem auszuführenden VARCHAR verketten (dh dynamisches SQL), würde ich empfehlen, das SQL zu parametrisieren. Dies hat den Vorteil, dass Sie sich vor SQL-Injection schützen können. Außerdem müssen Sie sich keine Sorgen mehr machen, dass Sie solchen Anführungszeichen entkommen (was Sie tun, indem Sie die Anführungszeichen verdoppeln).
zB statt zu tun
Versuche dies:
quelle
Sie können sich einem Zitat wie folgt entziehen:
Ergebnis wird sein
quelle
Sie können Ihr Escape-Zeichen definieren, aber nur mit einer
LIKE
Klausel verwenden.Beispiel:
Hier wird
%
in der ganzen Zeichenfolge gesucht und so kann man denESCAPE
Bezeichner in verwendenSQL Server
.quelle
Sie müssen nur ersetzen
'
mit''
in Ihrem StringSie können auch verwenden,
REPLACE(@name, '''', '''''')
wenn Sie SQL dynamisch generierenWenn Sie innerhalb einer like-Anweisung maskieren möchten, müssen Sie die ESCAPE-Syntax verwenden
Erwähnenswert ist auch, dass Sie sich für SQL-Injection-Angriffe offen lassen, wenn Sie dies nicht berücksichtigen. Weitere Informationen bei Google oder: http://it.toolbox.com/wiki/index.php/How_do_I_escape_single_quotes_in_SQL_queries%3F
quelle
select '
den Fehler zurückUnclosed quotation mark after the character string ''
. Nirgendwo in meiner Antwort verwende ich"
nur zwei'
, nicht sicher, warum meine die einzige Antwort mit Abstimmungen ist.Austretende Zitate in MSSQL wird von einem doppelten Anführungszeichen gemacht, also ein
''
oder""
produzieren ein entkam'
und"
sind.quelle
Sie können das
**\**
Zeichen vor dem Wert verwenden, dem Sie entkommen möchten, zinsert into msglog(recipient) values('Mr. O\'riely')
select * from msglog where recipient = 'Mr. O\'riely'
quelle
Wenn Sie Benutzereingaben in einer Variablen vermeiden möchten, können Sie dies wie folgt in SQL tun
Der @userinput wird jetzt mit einem zusätzlichen einfachen Anführungszeichen für jedes Auftreten eines Anführungszeichens maskiert
quelle
FROM: SQL Server Escape ein Unterstrich
quelle
Um den Code leicht lesbar zu halten, können Sie
[]
die Zeichenfolge mit eckigen Klammern in Anführungszeichen setzen'
oder umgekehrt.quelle