如何逃脱SQL Server中的单引号?
-
22-09-2019 - |
题
我试图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.')
在报价中增加了一倍应该有工作,所以它的奇特在于它没有为你工作;然而,另一种是使用双引号字符,而不是单一的,串绕。即,
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,"'","''");