SQL server - 插入包含反斜杠的字符串记录

时间:2016-04-18 07:26:13

标签: c# .net sql-server

我试图在表格中插入一条记录,其中一列有以下值。

\\\\a\\b\\c

Database DataProvider = new SqlDatabase(connectionstring);  
DataProvider.ExecuteNonQuery("sprocname",
                    Id,
                    qText,
                );  

此处,qText具有以上价值。执行后,该值仅作为\(单反斜杠)添加到表中。

如果我尝试在表格中手动插入记录,

INSERT INTO mytbl(id, q) VALUES
 (0, '\\\\a\\b\\c')

插入正确的值。出现这种情况的原因是什么?我在这里错过了什么吗?

更新

似乎无论我的字符串是什么,只有它的第一个字母插入该列!不知道为什么。该列的数据类型为varchar(max)

实施例。

for qText = 'abc', then column has value `a`
for qText = '\\\\a\\b\\c', then column has value `\`

3 个答案:

答案 0 :(得分:5)

反斜杠是一个转义序列字符,因此两个反斜杠将被解释为一个反斜杠。如果你想在这种情况下保持你的反斜杠,请使用逐字字符串文字,它在字符串文字的开头添加@。

var qText = @"\\\\a\\b\\c";

答案 1 :(得分:0)

\存储在字符串变量中时,需要将其添加为转义序列"\\"

所以,如果我们写

String qText = "\\"

qText的值为\

因此,要存储\\\\a\\b\\c,您应该将\的数量加倍。

String qText = "\\\\\\\\a\\\\b\\\\c"

这种方式在使用时,qText的值将为\\\\a\\b\\c

答案 2 :(得分:0)

问题出在存储过程中。该过程的输入参数为varchar,但未指定长度。