C# 双引号仅转义字符

本文关键字:转义字符 | 更新日期: 2023-09-27 18:35:07

>我正在使用尝试使用"的转义字符来构造一个SQL字符串,如下所示:

selSQL += " WHERE [" + sFieldArr[i, 0] + "]" + op + "'"" + sFieldArr[i, 1] + "'"";

但它总是错误地生成字符串,例如

WHERE [State]='"Illinois'"

我应该如何转义这里的双引号?

更新:正如评论中指出的,转义字符实际上工作正常,它们只是在调试器中似乎工作不正确。 问题是 SQL Server 将其解释为列名 - 请参阅本文:https://support.microsoft.com/en-us/kb/222664

解决方案是使用两个单引号而不是一个双引号。

C# 双引号仅转义字符

您可以使用逐字字符串文字对其进行转义。

@" WHERE [" + sFieldArr[i, 0] + "]" + op + @"""" + sFieldArr[i, 1] + @"""";

或者如果你想做常规的方式,

" WHERE [" + sFieldArr[i, 0] + "]" + op + "'""" + sFieldArr[i, 1] + "'""";

正如您为sFieldArr值所述,它们应该返回

WHERE [State]="Illinois"

但在你的情况下,我建议执行以下操作

selSQL += String.Format(@" WHERE [{0}] {1} ""{2}""", sFieldArr[i, 0], op, sFieldArr[i, 1]);

如此处所述,您可以使用带有两个双引号的 at 符号:

selSQL += " WHERE [" + sFieldArr[i, 0] + "]" + op + @"""" + sFieldArr[i, 1] + @"""";

输出:

WHERE [State]="Illinois"