1361 Stimmen

Wie kann ich ein einfaches Anführungszeichen in SQL Server ausblenden?

Ich versuche, die insert einige Textdaten in eine Tabelle in SQL Server 9.

Der Text enthält ein einzelnes Zitat ' .

Wie kann ich dem entgehen?

Ich habe versucht, zwei einfache Anführungszeichen zu verwenden, aber das hat mir einige Fehler eingebracht.

z. B. insert into my_table values('hi, my name''s tim.');

51 Stimmen

"Es gab einige Fehler" - Was waren das für Fehler?

2 Stimmen

Ja, denn der richtige Weg, einfache Anführungszeichen in MSSQL einzufügen, ist, sie zu verdoppeln. Das Beispiel, das Sie uns zeigen, sollte funktionieren. Wie haben Sie diese SQL-Abfrage erstellt, mit welcher Sprache? Oder in SQL Server Management Studio?

1 Stimmen

18voto

Alex Martelli Punkte 805329

Die Verdoppelung des Anführungszeichens hätte eigentlich funktionieren müssen, daher ist es seltsam, dass es bei Ihnen nicht funktioniert hat. Eine Alternative ist jedoch die Verwendung von doppelten Anführungszeichen anstelle von einfachen um die Zeichenfolge herum. D.h.,

insert into my_table values("hi, my name's tim." );

7 Stimmen

Was ist, wenn der Text sowohl einfache als auch doppelte Anführungszeichen enthält? Und sind doppelte Anführungszeichen nicht nur für Feldnamen reserviert?

6voto

Daniel Schmidt Punkte 391

Außerdem muss man darauf achten, ob es wirklich als klassischer ASCII ' (ASCII 27) oder als Unicode 2019 (der ähnlich, aber nicht gleich aussieht) gespeichert ist.

Bei Einfügungen ist das keine große Sache, aber bei Auswahlen und Aktualisierungen kann es von großer Bedeutung sein.
Wenn es sich um den Unicode-Wert handelt, dann wird das escaping des ' in einer WHERE-Klausel (z.B. where blah = 'Workers''s Comp') so aussehen, als ob der gesuchte Wert nicht vorhanden wäre, wenn das ' in "Worker's Comp" tatsächlich der Unicode-Wert ist.

Wenn Ihre Client-Anwendung sowohl die Eingabe mit freien Tasten als auch die Eingabe per Kopieren und Einfügen unterstützt, könnte es in einigen Zeilen Unicode und in anderen ASCII sein!

Eine einfache Möglichkeit, dies zu überprüfen, besteht darin, eine Art von Abfrage mit offenem Ende durchzuführen, die den gesuchten Wert zurückbringt, und diesen dann in Notepad++ oder einen anderen Editor, der Unicode unterstützt, zu kopieren und einzufügen.

Der Unterschied zwischen dem Ascii-Wert und dem Unicode-Wert sollte für die Augen offensichtlich sein, aber wenn Sie sich zum Analismus neigen, wird er in einem Hex-Editor als 27 (Ascii) oder 92 (Unicode) angezeigt.

3 Stimmen

Beachten Sie, dass das einfache Anführungszeichen char(39) , nicht char(27) . 27 ist der Hex-Code für einfache Anführungszeichen. 39 ist der Dezimalcode dafür.

4voto

AlinPaul8806 Punkte 149

Bei der folgenden Syntax bleibt Ihnen NUR EIN Anführungszeichen erspart:

SELECT ''''

Das Ergebnis wird ein einfaches Anführungszeichen sein. Könnte für die Erstellung von dynamischem SQL sehr hilfreich sein :). enter image description here

4voto

rchacko Punkte 1799

Die Option der doppelten Anführungszeichen hat mir geholfen

SET QUOTED_IDENTIFIER OFF;
insert into my_table values("hi, my name's tim.");
SET QUOTED_IDENTIFIER ON;

1voto

laxman Thapa Punkte 1

Fügen Sie einfach ein ' vor alles, was eingefügt werden soll. Es wird wie ein Escape-Zeichen in SqlServer sein

Beispiel: Wenn Sie ein Feld haben als, Mir geht es gut. . können Sie tun: UPDATE my_table SET row ='Mir geht's gut.';

0 Stimmen

Ist das nicht genau das, was der Auftraggeber getan hat und was auch in der am höchsten bewerteten Antwort steht? Vermutlich muss es eine andere Fehlerquelle gegeben haben.

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