SQL Server表列名中特殊字符的处理
实际上,我创建了一个SQL Server表,其列名包含特殊字符,如SQL Server表列名中特殊字符的处理,sql,sql-server,Sql,Sql Server,实际上,我创建了一个SQL Server表,其列名包含特殊字符,如@$$$%Id%^$$\,并创建了一个插入查询来插入值,例如: Insert into MyTable ([@#$$%Id%^$#]) values (@@#$$%Id%^$#) 在此之后,传递参数值为: SqlCommand cmd = new SqlCommand (“Insert into MyTable ([@#$$%Id%^$#]) values (@@#$$%Id%^$#) ”); cmd.Parameters
@$$$%Id%^$$\
,并创建了一个插入查询来插入值,例如:
Insert into MyTable ([@#$$%Id%^$#]) values (@@#$$%Id%^$#)
在此之后,传递参数值为:
SqlCommand cmd = new SqlCommand (“Insert into MyTable ([@#$$%Id%^$#]) values (@@#$$%Id%^$#) ”);
cmd.Parameters.Add(new SqlParameter (“(@@#$$%Id%^$#”, ParameterValue))
执行此代码后,我得到
必须声明标量变量@
这是行不通的:
Insert into MyTable ([@#$$%Id%^$#]) values (@@#$$%Id%^$#)
除非您以这种方式声明变量:
DECLARE @@#$$%Id%^$# INT = 1;
但是,这不是有效的语法。因此,您可能想将整个值作为字符串插入:
Insert into MyTable ([@#$$%Id%^$#]) values ('@@#$$%Id%^$#')
您在字符串中使用的前导@令人困惑-您的意思是作为参数指定吗?这对我来说很好:
CREATE TABLE dbo.MyTable([@#$$%Id%^$#] VARCHAR(255));
INSERT dbo.MyTable([@#$$%Id%^$#]) VALUES('@@#$$%Id%^$#');
DROP TABLE dbo.MyTable;
这是行不通的:
Insert into MyTable ([@#$$%Id%^$#]) values (@@#$$%Id%^$#)
除非您以这种方式声明变量:
DECLARE @@#$$%Id%^$# INT = 1;
但是,这不是有效的语法。因此,您可能想将整个值作为字符串插入:
Insert into MyTable ([@#$$%Id%^$#]) values ('@@#$$%Id%^$#')
您在字符串中使用的前导@令人困惑-您的意思是作为参数指定吗?这对我来说很好:
CREATE TABLE dbo.MyTable([@#$$%Id%^$#] VARCHAR(255));
INSERT dbo.MyTable([@#$$%Id%^$#]) VALUES('@@#$$%Id%^$#');
DROP TABLE dbo.MyTable;
不要在Word中编辑并粘贴在此处(智能引号没有那么智能)。不要在Word中编辑并粘贴在此处(智能引号没有那么智能)。