Frage

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

Der Text enthält einen Apostroph ( ').

Wie kann ich, dass entkommen?

Ich habe versucht, zwei einfache Anführungszeichen verwenden, aber es warf mir einige Fehler.

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

War es hilfreich?

Lösung

Einfache Anführungszeichen entgangen werden, indem sie bis zu verdoppeln , wie Sie haben uns in Ihrem Beispiel gezeigt. Die folgende SQL stellt diese Funktionalität. Getestet habe ich es auf SQL Server 2008:

DECLARE @my_table TABLE (
    [value] VARCHAR(200)
)

INSERT INTO @my_table VALUES ('hi, my name''s tim.')

SELECT * FROM @my_table

Ergebnisse

value
==================
hi, my name's tim.

Andere Tipps

Wenn Ihr Apostroph mit einem anderen Apostroph für Sie funktioniert nicht entkommen (wie es nicht für einen meiner letzten REPLACE() Anfragen haben), können Sie SET QUOTED_IDENTIFIER OFF vor Ihrer Abfrage verwenden können, dann SET QUOTED_IDENTIFIER ON nach Ihrer Anfrage.

Zum Beispiel

SET QUOTED_IDENTIFIER OFF;

UPDATE TABLE SET NAME = REPLACE(NAME, "'S", "S");

SET QUOTED_IDENTIFIER ON;
-- set OFF then ON again

Wie wäre:

insert into my_table values('hi, my name'+char(39)+'s tim.')

Die Verdoppelung des Zitats oben gearbeitet haben sollte, so ist es eigentümlich ist, dass es keine Arbeit für Sie getan haben; jedoch ist eine Alternative doppelten Anführungszeichen verwendet, und nicht einzelne, um die Zeichenfolge. D.h.

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

2 Möglichkeiten zum Umgehen dieses:


für ' können Sie es einfach in der Zeichenfolge verdoppeln, z.B. select 'I''m happpy' -- will get: I'm happy


Für jede charactor Sie nicht sicher sind: in SQL-Server, den Sie durch select unicode(':') jedes Zeichen des Unicode bekommen

So diesem Fall können Sie auch select 'I'+nchar(39)+'m happpy'

Auch eine andere Sache, sorgfältiger zu sein, ist, ob es wirklich als klassisches ASCII gespeichert wird "(ASCII 27) oder Unicode-2019 (das ähnlich aussieht, aber nicht gleich).
Das ist keine große Sache auf Einsätze, aber es kann die Welt auf wählt und Updates bedeuten.
Wenn es der Unicode-Wert dann die Flucht ‚in einer WHERE-Klausel (zB wo blah = 'Arbeiter Comp‘) kehrt wie der Wert, den Sie suchen ist nicht da, wenn die "in‚Arbeiter Comp‘ Frei Schlüssel sowie Kopie ist eigentlich der Unicode-Wert.
Wenn der Client-Anwendung unterstützt und basierte Eingabe einzufügen, könnte es sein, Unicode in einigen Zeilen, und ASCII in anderen!
Ein einfacher Weg, dies zu bestätigen ist durch eine Art von offenem Ende Abfrage zu tun, die für den Wert, den Sie suchen zurückbringen wird, und dann kopieren und einfügen, dass in Notepad ++ oder einer anderen Unicode-Unterstützung Editor.
Die unterschiedliche Aussehen zwischen dem ASCII-Wert und die Unicode sollte man die Augen offensichtlich sein, aber wenn man in Richtung der anal anlehnen, wird es als 27 (ascii) oder 92 (Unicode) in einem hex-Editor angezeigt.

Das sollte funktionieren: einen Backslash verwenden und ein doppeltes Anführungszeichen

put
"UPDATE my_table SET row =\"hi, my name's tim.\";

Das sollte funktionieren

DECLARE @singleQuote CHAR 
SET @singleQuote =  CHAR(39)

insert into my_table values('hi, my name'+ @singleQuote +'s tim.')

Legen Sie einfach ein ", bevor etwas eingefügt werden. Es wird in sqlServer

wie ein Escape-Zeichen sein

Beispiel: Wenn Sie ein Feld als haben, Ich bin in Ordnung . du kannst tun: UPDATE my_table SET row = 'I' 'm in Ordnung.';

string value = "Abhishek's";

value = Replace(value,"'","''");
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top