我试图insertSQL Server 9一些文本数据插入表中。

的文字包括一个单引号(')。

我如何逃脱?

我试图用两个单引号,但它把我的一些错误。

例如。 insert into my_table values('hi, my name''s tim.');

有帮助吗?

解决方案

单引号用起来加倍逃脱,就像你已经证明我们在你的榜样。下面的SQL阐释了此功能。我测试了它的SQL Server 2008上:

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

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

SELECT * FROM @my_table

结果

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

其他提示

如果您逃逸单引号与另一单引号是不是为你工作(就像它没有为我最近REPLACE()查询之一),你可以查询后使用SET QUOTED_IDENTIFIER OFF查询之前,然后SET QUOTED_IDENTIFIER ON

例如

SET QUOTED_IDENTIFIER OFF;

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

SET QUOTED_IDENTIFIER ON;
-- set OFF then ON again

如何:

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

在报价中增加了一倍应该有工作,所以它的奇特在于它没有为你工作;然而,另一种是使用双引号字符,而不是单一的,串绕。即,

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

<强> 2点的方式来解决此问题:


'可以简单字符串中一倍,例如 select 'I''m happpy' -- will get: I'm happy


有关的任何人物造型你不知道的:在SQL Server中,你可以通过select unicode(':')得到任何字符的unicode的

所以,这种情况下你也可以select 'I'+nchar(39)+'m happpy'

另外还有一点要小心的是它是否真的存储为一个典型的ASCII“(ASCII 27)或Unicode 2019(看起来相似,但不尽相同)。搜索结果这不是插入一个大问题,但它可能意味着世界上的选择和更新。结果如果是,则Unicode值逃避“在WHERE子句中(例如在胡说=‘工人’的比较”)将返回像您正在搜索的价值是不存在的,如果“在‘工人比较’实际上是Unicode值。搜索结果,如果您的客户端应用程序支持自由键,以及复制和粘贴资源投入,也可能在某些行是Unicode和ASCII在别人!搜索结果 一个简单的方法来确认这是做某种类型的开放式的查询,将带回您正在搜索的值,然后复制并粘贴到记事本++或其他一些支持Unicode的编辑器。搜索结果的不同外观ASCII值和Unicode一个应该是显而易见的眼睛,但如果你对肛瘦,它会显示为一个十六进制编辑器27(ASCII)或92(Unicode)的之间。

这应该工作:用一个反斜杠,把一个双引号

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

此应该工作

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

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

只要插入一个'要插入任何内容之前。它会像在SQLServer的一个转义字符

实施例: 当你有一个字段,我很好即可。 你可以做: UPDATE SET MY_TABLE行= 'I''m细。';

string value = "Abhishek's";

value = Replace(value,"'","''");
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top