如何在SQL-Update语句中处理 - 转义单引号和双引号

时间:2012-01-19 17:03:09

标签: sql-server-2008 sql-update

我有这个示例T-SQL查询并在SQL-Server-2008上尝试此操作。

DECLARE nvarchar(1000) @wstring = "I asked my son's teacher, "How is my son doing now?"" 

UPDATE tablename SET columnname = ' " & @wstring & " ' where ... blah ... blah

我知道上面的查询会抛出错误。

那么我如何处理 - 在SQL-Update语句中转义单引号和双引号。

请不要建议在每个报价之前手动添加'斜杠\'或单引号,以及bouble-quote。

这是不切实际的,因为上面的例子只是一个sAmple,实际的应用程序值超过1000个字符,可以从其他系统源接收。

7 个答案:

答案 0 :(得分:21)

您可以使用反斜杠转义引号:

"I asked my son's teacher, \"How is my son doing now?\""

答案 1 :(得分:12)

使用两个单引号在sql语句中转义它们。双引号应该不是问题:

SELECT 'How is my son''s school helping him learn?  "Not as good as Stack Overflow would!"'

打印:

How is my son's school helping him learn? "Not as good as Stack Overflow would!"

答案 2 :(得分:4)

根据您编程的语言,您可以使用函数将双引号替换为双引号。

例如在PHP中:

str_replace('"', '""', $string);

如果您只是尝试使用SQL,那么REPLACE()可能就是您要找的。

所以你的查询看起来像这样:

"UPDATE Table SET columnname = '" & REPLACE(@wstring, '"', '""') & "' where ... blah ... blah "

答案 3 :(得分:1)

使用“REPLACE”删除特殊字符。

REPLACE(ColumnName ,' " ','')

前: -

- 查询---

DECLARE @STRING AS VARCHAR(100)
SET @STRING ='VI''RA""NJA "'

SELECT @STRING 
SELECT REPLACE(REPLACE(@STRING,'''',''),'"','') AS MY_NAME

- 结果---

VI'RA “” NJA“

答案 4 :(得分:1)

当SET QUOTED_IDENTIFIER为OFF时,表达式中的文字字符串可以用单引号或双引号分隔。

如果文字字符串由双引号分隔,则字符串可以包含嵌入的单引号,例如撇号。

答案 5 :(得分:0)

在C#和VB中,SqlCommand对象实现了Parameter.AddWithValue方法 处理这种情况

答案 6 :(得分:0)

我已经解决了类似的问题,首先将文本导入excel电子表格,然后使用Substitute函数替换SQL Server要求的单引号和双引号。 SUBSTITUTE(SUBSTITUTE(A1,“'”,“”“),”“”“,” \“”“)

在我的情况下,我有很多行(每行要清洗然后插入的数据),并且一旦替换完成,电子表格就会自动为文本生成插入查询,例如。 =“ INSERT INTO [dbo]。[表名]([textcolumn])值('”&SUBSTITUTE(SUBSTITUTE(A1,“'”,“”“),”“”“,” \“”“)&” ')”

我希望有帮助。