SQL更新查询出错

时间:2012-05-07 10:50:51

标签: sql sql-server sql-server-2008 tsql

以下查询抛出错误。 PLZ帮助我&告诉我这是什么错误。

此查询在结果后退缩:

string sqlcmd = "UPDATE branch SET brac_subj = " + query_data + " WHERE (braid = "+dd_branch+")";

     UPDATE branch SET brac_subj = "'11' , '12' , '13' , '14' , '15' , '16' , '17' , '18' , '19' , '20' , '21'" WHERE (braid = 1) 

如何以下列格式存储字符串:

'11' , '12' , '13' , '14' , '15' , '16' , '17' , '18' , '19' , '20' , '21' 

5 个答案:

答案 0 :(得分:2)

您在Enigma中遇到的问题称为Escaping。由于单引号是受限制的字符,并且在SQL中定义字符串的开头,因此不能在同一字符串中使用它。

除此之外,看起来您的印象是SQL Server使用双引号来定义字符串,但事实并非如此。

此语法不起作用:

UPDATE branch SET brac_subj = "'11' , '12' , '13'"

此语法将起作用:

UPDATE branch SET brac_subj = '''11'' , ''12'' , ''13'''

诀窍在于使用您的编程代码在值周围添加额外的撇号,从而得到其他人建议的答案。

此外,测试此语法的简便方法是一个简短的select语句:

SELECT "'11' , '12' , '13'"

VS

SELECT '''11'' , ''12'' , ''13'''

答案 1 :(得分:1)

如果你想把它作为一个字符串。这应该有效:

query_data="'"+query_data.Replace("'","''")+"'";

如果你想要它们"11 , 12 , 13 , 14 , 15 , 16 , 17 , 18 , 19 , 20 , 21"。然后这样做:

query_data="'"+query_data.Replace("'","")+"'";

答案 2 :(得分:0)

用两个替换每个撇号,它应该工作 如果你想要“duncan o'toole”你在sql查询中使用'duncan o''toole'

答案 3 :(得分:0)

如果这是您要插入的数据类型,即没有单引号

,请尝试此操作
UPDATE branch SET brac_subj = '11,12,13' WHERE (braid = 1)

如果您想插入单引号,也可以用双引号替换单引号

UPDATE branch SET brac_subj = '"11","12","13"' WHERE (braid = 1)

答案 4 :(得分:0)

最简单的方法是使用:

SET QUOTED_IDENTIFIER OFF

UPDATE分支SET brac_subj =“'11','12','13'”

当SET QUOTED_IDENTIFIER为ON时,标识符可以用双引号分隔,文字必须用单引号分隔。当SET QUOTED_IDENTIFIER为OFF时,不能引用标识符,并且必须遵循标识符的所有Transact-SQL规则。有关详细信息,请参阅Database Identifiers