2009-04-22 13 views

Antwort

7
INSERT INTO Table1 (Column1) VALUES ('John''s') 

Oder Sie können eine gespeicherte Prozedur verwenden und die Parameter übergeben als -

usp_Proc1 @Column1 = 'John''s' 

wenn Sie eine INSERT-Abfrage und nicht eine gespeicherte Prozedur verwenden, werden Sie das Zitat mit zwei Zitate entkommen müssen, sonst ist es ok, wenn Sie es nicht tun.

+0

wie es möglich sein kann, wenn der Wert von einer Variablen kommt – solairaja

+1

@solairaja - @somevar = ‚Test‘ des – Kirtan

23

Apostroph mit einem zusätzlichen Einzel Flucht als Kirtan
wies darauf hin, Und wenn Sie eine dynamische SQL auszuführen versuchen, (das ist keine gute Idee, in erster Linie ist) über Sp_executesql dann der folgenden Code für Sie arbeiten würde

sp_executesql N'INSERT INTO SomeTable (SomeColumn) VALUES (''John''''s'')' 
19

Die Antwort hängt wirklich davon ab, wie Sie die INSERT tun.

Wenn Sie ein SQL wörtliche angeben, dann müssen Sie das Doppel-tick-Ansatz verwenden:

-- Direct insert 
INSERT INTO Table1 (Column1) VALUES ('John''s') 

-- Using a parameter, with a direct insert 
DECLARE @Value varchar(50) 
SET @Value = 'John''s' 
INSERT INTO Table1 (Column1) VALUES (@Value) 

-- Using a parameter, with dynamic SQL 
DECLARE @Value varchar(50) 
SET @Value = 'John''s' 
EXEC sp_executesql 'INSERT INTO Table1 (Column1) VALUES (@p1)', '@p1 varchar(50)', @Value 

Wenn Sie die INSERT von Code tun, verwenden Parameter:

// Sample ADO.NET 
using (SqlConnection conn = new SqlConnection(connectionString)) { 
    conn.Open(); 
    using (SqlCommand command = conn.CreateCommand()) { 
     command.CommandText = "INSERT INTO Table1 (Column1) VALUES (@Value)"; 

     command.Parameters.AddWithValue("@Value", "John's"); 

     command.ExecuteNonQuery(); 
    } 
} 

Wenn Ihr Daten enthalten Benutzereingabe, direkt oder indirekt, USE PARAMETERS. Parameter schützen vor SQL-Injection-Angriffen. Bauen Sie niemals dynamisches SQL mit Benutzereingaben auf.

+0

danke ... aber dieser Code wird für die dynamische Aktualisierung querry nicht funktionieren –

+4

können Sie näher auf Ihre Anfrage geben? Parameter funktionieren in fast allen Abfragen. Ich bin neugierig, warum sie in deinem Fall nicht funktionieren. – Brannon

16

Dieser arbeitete für mich:

INSERT INTO [TABLE] 
    VALUES ('text','''test.com''', 1) 

Grundsätzlich Sie das Apostroph nehmen Sie es mit zwei eingefügt werden soll und ersetzen. Wenn Sie also eine Textzeichenfolge ("Text") einfügen und einzelne Anführungszeichen hinzufügen möchten, wäre das ('' 'text' ''). Hoffe das hilft.

1

Diese Antwort funktioniert in SQL Server 2005, 2008, 2012.

Manchmal wird der Wert VIELE einfache Anführungszeichen hat. Anstatt ein einzelnes Zitat neben jedem einzelnen Zitat hinzuzufügen, wie oben mit 'John''s' beschrieben. Und es gibt Beispiele, die die REPLACE Funktion verwenden, um viele einfache Anführungszeichen in einem Wert zu behandeln.

Versuchen Sie Folgendes. Dies ist eine Update-Anweisung, aber Sie können sie auch in einer INSERT-Anweisung verwenden.

SET QUOTED_IDENTIFIER OFF 

DECLARE @s VARCHAR(1000) 

SET @s = "SiteId:'1'; Rvc:'6'; Chk:'1832'; TrEmp:'150'; WsId:'81'; TtlDue:'-9.40'; TtlDsc:'0'; TtlSvc:'0'; TtlTax:'-0.88'; TtlPay:'0'; TipAmt:'0.00'; SvcSeq:'09'; ReTx:'N'; TraceId:'160110124347N091832';" 


UPDATE TransactionPaymentPrompt 
set PromptData = @s 

from TransactionPaymentPrompt tpp with (nolock) 
where tpp.TransactionID = '106627343' 
0

Sie gefragt, wie eine Apostrophe character (') in SQL Server zu entkommen. Alle obigen Antworten erklären dies ausgezeichnet.

Je nach Situation kann jedoch auch die Right single quotation mark character (’) geeignet sein.

(keine Escape-Zeichen erforderlich)

-- Direct insert 
INSERT INTO Table1 (Column1) VALUES ('John’s') 

• Apostrophe (U + 0027)

Ascii Apostrophe on Wikipedia

• Rechts Apostroph (U + 2019)

Unicode Right single quotation on Wikipedia