我有这个示例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个字符,可以从其他系统源接收。
答案 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()可能就是您要找的。 p>
所以你的查询看起来像这样:
"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,“'”,“”“),”“”“,” \“”“)&” ')”
我希望有帮助。