3

以下查询抛出错误。请帮助我并告诉我错误是什么。

此查询返回以下结果:

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' 
4

5 回答 5

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'"

对比

SELECT '''11'' , ''12'' , ''13'''
于 2012-05-07T19:21:20.030 回答
1

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

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

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

query_data="'"+query_data.Replace("'","")+"'";
于 2012-05-07T11:05:19.690 回答
0

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

于 2012-05-07T11:03:27.593 回答
0

如果这是您要插入的数据类型(即不带单引号),请尝试此操作

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

如果你想插入单引号以及用双引号替换单引号

UPDATE branch SET brac_subj = '"11","12","13"' WHERE (braid = 1)
于 2012-05-07T11:05:05.977 回答
0

最简单的方法是使用:

SET QUOTED_IDENTIFIER OFF

更新分支 SET brac_subj = "'11' , '12' , '13'"

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

于 2013-05-28T14:39:17.850 回答