处理SQL Server表列名中的特殊字符

时间:2012-08-24 15:34:08

标签: sql sql-server

实际上我创建了一个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))

执行此代码后,我得到了

  

必须声明标量变量@

1 个答案:

答案 0 :(得分:4)

这永远不会奏效:

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;