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

实际上,我创建了一个SQL Server表,其列名包含特殊字符,如
@$$$%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中编辑并粘贴在此处(智能引号没有那么智能)。