如何插入单引号sql server 2005的文本

我想用单引号插入文本例如john's to sql server 2005数据库中的表

如Kirtan指出的那样,单引号转义
如果你试图通过sp_executesql来执行一个dynamic的sql(这首先不是一个好主意),那么下面的代码将适用于你

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

答案真的取决于你如何做INSERT

如果你正在指定一个SQL文字,那么你需要使用double-tick方法:

 -- 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 

如果您正在从代码执行INSERT,请使用参数:

 // 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(); } } 

如果您的数据包含用户input,直接或间接使用USE PARAMETERS 。 参数防止SQL注入攻击。 永远不要用用户inputbuild立dynamicSQL。

这对我工作:

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

基本上,你把你想要插入的单引号replace为两个。 所以,如果你想插入一个文本string('文本'),并添加单引号,它会是('''文本''')。 希望这可以帮助。

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

或者您可以使用存储过程并将parameter passing为 –

 usp_Proc1 @Column1 = 'John''s' 

如果您正在使用INSERT查询而不是存储过程,则必须用两个引号将引号转义,否则如果不执行则返回OK。

这个答案适用于SQL Server 2005,2008,2012。

有时价值有很多单引号。 而不是像上面描述的那样在每个单引号旁边添加一个单引号。 还有一些使用REPLACE函数处理值中的许多单引号的例子。

尝试以下。 这是一个更新语句,但您也可以在INSERT语句中使用它。

 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' 

你问了如何在SQL Server中转义一个Apostrophe character (') 。 上面所有的答案都做了很好的解释。

但是,根据情况, Right single quotation mark character (')可能是合适的。

(不需要转义字符)

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

•撇号(U + 0027)

Ascii撇号维基百科

•右单引号(U + 2019)

Unicode维基百科上的右单引号