协慌网

登录 贡献 社区

如何在 SQL Server 中转义单引号?

我正在尝试insert一些文本数据插入SQL 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.')