我试图将一些文本数据插入到SQL Server 9中的表中。

文本中包含了一个引用。

我怎么逃脱呢?

我尝试使用两个单引号,但它给我带来了一些错误。

如。插入my_table值('hi, my name' s tim.');


当前回答

这应该是可行的:使用反斜杠和双引号

"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.')

我们中的许多人都知道,转义单引号的流行方法是像下面这样轻松地将它们重复。

PRINT 'It''s me, Arul.';

我们将研究其他一些转义单引号的替代方法。

1. UNICODE字符

39是单引号的UNICODE字符。我们可以像下面这样使用它。

PRINT 'Hi,it'+CHAR(39)+'s Arul.';
PRINT 'Helo,it'+NCHAR(39)+'s Arul.';

2. QUOTED_IDENTIFIER

另一个简单且最佳的替代解决方案是使用QUOTED_IDENTIFIER。 当QUOTED_IDENTIFIER设置为OFF时,字符串可以用双引号括起来。 在这个场景中,我们不需要转义单引号。 所以,这种方法在使用很多带单引号的字符串值时非常有用。 当使用这么多行INSERT/UPDATE脚本(其中列值有单引号)时,这将非常有帮助。

SET QUOTED_IDENTIFIER OFF;
PRINT "It's Arul."
SET QUOTED_IDENTIFIER ON;

结论

上述方法适用于AZURE和On Premises。

这应该是可行的:使用反斜杠和双引号

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

如何:

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

STRING_ESCAPE函数可以在新版本的SQL Server上使用