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

时间:2009-04-22 04:31:56

标签: sql sql-server-2005 quotes quotations

我想插入单引号的文字 例如,john在sql server 2005数据库中的表

6 个答案:

答案 0 :(得分:23)

如Kirtan所指出的那样,用一张额外的单曲逃脱单引号 如果你试图通过sp_executesql执行动态sql(这首先不是一个好主意),那么下面的代码将适合你

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

答案 1 :(得分:19)

答案实际上取决于你如何做INSERT

如果要指定SQL文字,则需要使用双勾选方法:

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

如果您的数据包含用户输入,直接或间接, USE PARAMETERS 。参数可防止SQL注入攻击。永远不要使用用户输入构建动态SQL。

答案 2 :(得分:16)

这对我有用:

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

基本上,您需要插入要插入的单引号并将其替换为两个。因此,如果您想插入一串文本('text')并在其周围添加单引号,那么它将是('''text''')。希望这会有所帮助。

答案 3 :(得分:7)

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

或者您可以使用存储过程并将参数传递为 -

usp_Proc1 @Column1 = 'John''s'

如果您使用的是INSERT查询而不是存储过程,则必须使用两个引号来转义引号,否则如果不这样做则可以。

答案 4 :(得分:1)

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

有时价值有多个单引号。而不是像上面描述的'John''s'那样在每个单引号旁边添加单引号。并且有一些示例使用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'

答案 5 :(得分:0)

您询问了如何在SQL Server中转义interface。上面的所有答案都很好地解释了这一点。

但是,根据具体情况,ValueConverter可能是合适的。

(无需转义字符)

Apostrophe character (')

•撇号(U + 0027)

Ascii Apostrophe on Wikipedia

•右单引号(U + 2019)

Unicode Right single quotation on Wikipedia