我想在 sql server 2005 数据库中的表中插入带单引号的文本,例如 john's
6 回答
正如 Kirtan 指出的那样,用一个额外的单引号转义单引号
如果您尝试通过 sp_executesql 执行动态 sql(这首先不是一个好主意),那么下面的代码将为您工作
sp_executesql N'INSERT INTO SomeTable (SomeColumn) VALUES (''John''''s'')'
答案真的取决于你是如何做的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();
}
}
如果您的数据包含直接或间接的用户输入,请使用 PARAMETERS。参数可防止 SQL 注入攻击。永远不要使用用户输入构建动态 SQL。
这对我有用:
INSERT INTO [TABLE]
VALUES ('text','''test.com''', 1)
基本上,您使用要插入的单引号并将其替换为两个。因此,如果您想插入一串文本('text')并在其周围添加单引号,那就是('''text''')。希望这可以帮助。
INSERT INTO Table1 (Column1) VALUES ('John''s')
或者您可以使用存储过程并将参数传递为 -
usp_Proc1 @Column1 = 'John''s'
如果您使用的是 INSERT 查询而不是存储过程,则必须用两个引号对引号进行转义,否则如果不这样做也可以。
此答案适用于 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'
您问如何Apostrophe character (')
在 SQL Server 中转义。上面的所有答案都很好地解释了这一点。
但是,根据情况,Right single quotation mark character (’)
可能是合适的。
(不需要转义字符)
-- Direct insert
INSERT INTO Table1 (Column1) VALUES ('John’s')
• 撇号 (U+0027)
• 右单引号 (U+2019)