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

本文关键字:字符串 记录 server- 插入 包含反 SQL | 更新日期: 2024-09-24 15:41:28

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

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

Ex。

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

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

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

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

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

所以,如果我们写

String qText = "''"

qText的值将是'

因此,要存储''''a''b''c,应指定两倍的'

String qText = "''''''''a''''b''''c"

这样使用时,qText的值将为''''a''b''c

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